Exemple #1
0
int main(int argc, char **argv)
{
    int i;
    struct bstree *tree = bstree_new(&copyfn, &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;
}
Exemple #2
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;
}