从BST中删除唯一的节点

时间:2012-12-01 06:07:50

标签: c++

我的BST只有一个节点。我写了一个删除该节点的代码,但它仍然存在。就像它没有...更新。这是我的简单代码,只是为了测试案例

void Delete(BSTree* tree, int& key)
{
    if (key == tree->key)
        tree=NULL;
}

我的BSTree课程没有一个部分。只是值和左右指针。我的代码出了什么问题?谢谢!

1 个答案:

答案 0 :(得分:1)

您没有更改实际的tree指针。您只是更改在堆栈上分配的指针,指向与传入指针相同的地址。

您需要BSTree *&tree以便获得对原始指针的引用,以便任何更改都会对其产生影响。

正如Als指出的那样,除了上述内容外,不要忘记释放记忆。