반응형
#include<iostream>
using namespace std;
//노드생성
class Node //원하는 데이터 선언, 노드생성할때마다 포인터들 초기화
{
public:
char data;
Node *parent;
Node *brother;
Node *child;
Node() {}
Node(char data) :data(data), parent(0), brother(0), child(0) {}
~Node()
{
parent = NULL;
brother = NULL;
child = NULL;
}
};
//탐색함수
Node* searchNode(Node *R, char pid) // 루트부터 탐색, 트리의 크기가 클경우에 매번 루트부터 탐색하면 호출횟수가 많아진다는 단점이있다.
{
}
// 추가함수
void InsertNode(Node *R, char data)
{
Node *newNode = new Node(data);
newNode->parent = R; //부모 연결
Node *cur = R->child;
if (cur == 0)R->child = newNode;
while (cur != 0) { //이미 자식이 있다면 형제노드로 연결해준다.
if (cur->brother == 0)
{
cur->brother = newNode;
break;
}
cur = cur->brother;
}
}
//수정함수1
void upDataNode1(Node *R, char searchNode, char data) // 원하는 노드를 찾을때까지 재귀로 찾는기본함수
{
if (R == 0)return;
if (R->data == searchNode)
{
R->data = data;
return;
}
if (R->brother != 0)upDataNode1(R->brother, searchNode, data);
if (R->child != 0)upDataNode1(R->child, searchNode, data);
return;
}
//수정함수 2
void upDataNode2(Node *R, char searchNode, char data) // while문을 통해서 탐색하는 방법
{
if (R == 0)return;
if (R->data == searchNode)
{
R->data = data;
return;
}
Node *cur = R->brother;
while (cur != 0)
{
if (cur->data == searchNode)
{
cur->data = data;
break;
}
cur = cur->brother;
}
if (R->child != 0)upDataNode2(R->child, searchNode, data);
return;
}
//삭제함수
void deleteNode(Node *R, char searchNode)
{
if (R == 0)return;
if (R->data == searchNode) //부모형제관계를 확인
{
Node *parent = R->parent;//부모확인
if (parent->child == R) //내가 첫째였는가
{
Node *temp = R;
parent->child = R->brother;
delete temp;
}
else
{
Node *cur = parent->child;
Node *pre = 0;
while (cur != 0)
{
if (cur->data == searchNode)
{
Node *temp = cur;
pre->brother = cur->brother;
delete temp;
break;
}
pre = cur;
cur = cur->brother;
}
}
}
if (R->brother != 0) deleteNode(R->brother, searchNode);
if (R->child != 0) deleteNode(R->child, searchNode);
return;
}
//트리삭제
void deleteTree(Node *R) //형제 자식순으로 탐색을 가고 그 뒤에 자기자신 지워준다.
{
if (R == 0)return;
deleteTree(R->brother);
deleteTree(R->child);
delete R;
R = 0;
}
int main()
{
}
반응형
'자료구조' 카테고리의 다른 글
연결리스트(양방향,head 및 tail에 데이터추가) (0) | 2019.10.17 |
---|---|
트라이(Trie) 자료구조 (0) | 2019.04.29 |
HASH(해쉬) (0) | 2019.04.26 |
연결리스트[큐] (0) | 2019.04.26 |
정렬 총 정리 (0) | 2019.04.24 |