从C中删除BST

时间:2015-11-30 22:00:41

标签: c binary-search-tree free

我正在尝试在BST中创建删除功能。 当我尝试删除指针时,我收到此错误。 Click to see the image

void delete(Node** root, int data) {
    if((*root) == NULL)
        return;
    else if(data < (*root)->data)
        delete(&(*root)->left, data);
    else if(data > (*root)->data)
        delete(&(*root)->right, data);
    else {
        printf("%d\n", (*root)->data);
        // case 1
        if((*root)->left == NULL && (*root)->right == NULL) {
            free((*root));
            printf("wssal");
        }
    }

}

Problem view

 [1]: http://i.stack.imgur.com/42K5L.png

1 个答案:

答案 0 :(得分:1)

您的delete函数不会更新树结构,以反映已删除的节点不再位于树中的事实。所以你要离开树,包括指向不再存在的节点的指针。