任意の節xについて、左部分木に含まれる要素は節xよりも小さく、右部分木に含まれる要素は節xよりも大きい
typedef struct node{
int data;
struct node *left;
struct node *right;
}NODE;
NODE *root = NULL;
NODE *search(int key,NODE *p)
{
if(p == NULL){
return NULL;
}else if(key == p->key){
return p;
}else if(key < p->key){
return (search(key,p->left));
}else{
return (search(key,p->right));
}
}
NODE *search(int key,NODE *p)
{
p = root;
while(p != NULL){
if(key == p->data)){
return p;
}else if(key < p->data)){
p = p->left;
}else{
p = p->right;
}
return NULL;
}
}
NODE *insert(int key)
{
NODE **p,*new;
while(*p != NULL){
if(key == (*p)->data){
return NULL;
}else if(key < (*p)->data)){
p = &(*p)->left;
}else{
p = &(*p)->right;
}
}
if((new = malloc(sizeof(NODE))) == NULL){
fprintf(stderr,"out of memory!\n");
}
new->left = NULL;
new->right = NULL;
new->data = key;
*p = new;
return new;
}
参考文献