int main() { search_tree t = create_search_tree(); for(int i = 0;i < 20;++i){ search_tree_node node = create_search_tree_node(i); search_tree_insert(t,node); } in_order_search_tree(t->root); putchar('\n'); int maximum = search_tree_maximum(t->root)->key; int minimum = search_tree_minimum(t->root)->key; printf("maximum element:%d\nminimum element:%d\n",maximum,minimum); printf("After delete key=maximum,key=0 operation:\n"); delete_search_tree_node(t,search_tree_find(t->root,maximum)); delete_search_tree_node(t,search_tree_find(t->root,0)); in_order_search_tree(t->root); putchar('\n'); free_search_tree(t); malloc_stats(); return 0; }
Position search_tree_find(SearchTree t,key_t key) { if (t == NULL) return NULL; if (key < t->key) return search_tree_find(t->lchild,key); else if (key > t->key) return search_tree_find(t->rchild,key); else return t; }
search_tree_node search_tree_find(search_tree_node root,int key) { if(root == NULL) return NULL; if(key < root->key) return search_tree_find(root->left,key); else if(key > root->key) return search_tree_find(root->right,key); return root; }