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;
}
Esempio n. 2
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 */
}