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;
}
コード例 #2
0
ファイル: search_tree.c プロジェクト: jmjgemini/forfun
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;
}