#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
typedef struct node NODE;
struct node
{
int key;
NODE *parent;
NODE *left;
NODE *right;
};
NODE *root;
NODE* node_search(int key, NODE *root)
{
NODE *s;
s = root->left;
while(key != s->key && s != NULL)
{
if(key < s->key )
s = s->left;
if(key > s->key )
s = s->right;
}
if(s == NULL)
return NULL;
else
return s;
}
NODE * node_insert(int key)
{
NODE *p,*s;
p = root;
s = root->left;
while(s != NULL)
{
p = s;
if( key < s->key )
s = s->left;
if( key > s->key )
s = s->right;
}
if( (s = (NODE*)malloc(sizeof(NODE))) == NULL)
return NULL;
s->key = key;
s->left = NULL;
s->right = NULL;
if( key <p->key || p == root)
p->left = s;
else
p->right = s;
return s;
}
void init()
{
root = (NODE*)malloc(sizeof(NODE));
root->left = root->right = NULL;
}
void Insert_node(int key)
{
if(!root)
{
root = (NODE*)malloc(sizeof(NODE));
root->left = root->right = NULL;
root->key = key;
root->parent = NULL;
}
else
{
NODE *par,*tmp;
par = tmp = root;
while(tmp != NULL)
{
if( tmp->key == key)
break;
if( tmp->key > key )
{
if( tmp->left == NULL )
{
par = tmp;
tmp = tmp->left;
tmp = (NODE*)malloc(sizeof(NODE));
tmp->parent = par;
par->left = tmp;
tmp->left = tmp->right = NULL;
tmp->key = key;
break;
}
else
{
tmp = tmp->left;
}
}
if( tmp->key < key )
{
if( tmp->right == NULL )
{
par = tmp;
tmp = tmp->right;
tmp = (NODE*)malloc(sizeof(NODE));
tmp->parent = par;
par->right = tmp;
tmp->right = tmp->left = NULL;
tmp->key = key;
break;
}
else
{
tmp = tmp->right;
}
}
}
}
}
void Visit_Node(NODE* node)
{
printf("%d\n",node->key);
}
void Display_Node(NODE* node)
{
if( node != NULL )
{
Display_Node(node->left);
Visit_Node(node);
Display_Node(node->right);
}
}
bool Delete_Node(int key)
{/* 생략 */}
void main()
{
Insert_node(4);
Insert_node(1);
Insert_node(1);
Insert_node(5);
Insert_node(13);
Insert_node(41);
Insert_node(112);
Insert_node(61);
Insert_node(11);
Display_Node(root);
//printf("%d\n%d\n%d\n%d\n",root->key,root->left->key,root->right->key);
//printf("%d\n%d\n%d\n%d\n",root->key,root->left->key,root->left->left->key);
}
'프로그래밍 언어 > 프로그래밍' 카테고리의 다른 글
유니티 점프 (0) | 2016.06.08 |
---|---|
해시 테이블 (hash table) (0) | 2009.01.18 |
연결 리스트 (문장<이름>) (0) | 2009.01.18 |
연결 리스트 (한 글자) (0) | 2009.01.18 |
퀵정렬 (0) | 2009.01.18 |
댓글