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; }
void search_tree_insert(SearchTree *t,key_t key) { if (*t == NULL) { *t = malloc(sizeof(TreeNode)); if (*t == NULL) { fprintf(stderr, "Error:can not create TreeNode\n"); return; } (*t)->key = key; (*t)->lchild = NULL; (*t)->rchild = NULL; } else if (key < (*t)->key) search_tree_insert(&((*t)->lchild),key); else if (key > (*t)->key) search_tree_insert(&((*t)->rchild),key); /* else key == t->key then do nothing */ }