int main(int argc, char **argv) { int i; struct bstree *tree = bstree_new(©fn, &freefn, &int_cmp, 0); int test[] = {20, 15, 32, 40, 25}; for (i = 0; i < sizeof(test)/sizeof(test[0]); i++) { bstree_insert(tree, &test[i], NULL); } test_start(argv); test_case1(tree); assert(bstree_rotate_left(NULL, NULL) == 0); assert(bstree_rotate_left(NULL, tree->root) == 0); assert(bstree_rotate_left(tree, NULL) == 0); assert(bstree_rotate_left(tree, tree->root) == 1); test_case2(tree); assert(bstree_rotate_right(NULL, NULL) == 0); assert(bstree_rotate_right(NULL, tree->root) == 0); assert(bstree_rotate_right(tree, NULL) == 0); assert(bstree_rotate_right(tree, tree->root) == 1); test_case1(tree); test_end(); bstree_delete(tree); return 0; }
/* * 删除结点(key为节点的键值),并返回根节点 * * 参数说明: * tree 二叉树的根结点 * z 删除的结点 * 返回值: * 根节点 */ Node* delete_bstree(BSTree tree, Type key) { Node *z, *node; if ((z = bstree_search(tree, key)) != NULL) tree = bstree_delete(tree, z); return tree; }
char *test_delete() { bstring deleted = (bstring)bstree_delete(tree, &test1); mu_assert(deleted != NULL, "Got NULL on delete."); mu_assert(deleted == &expect1, "Should get test1"); bstring result = bstree_get(tree, &test1); mu_assert(result == NULL, "Should delete."); return NULL; }