任意の節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; }
参考文献