我的BST只有一个节点。我写了一个删除该节点的代码,但它仍然存在。就像它没有...更新。这是我的简单代码,只是为了测试案例
void Delete(BSTree* tree, int& key)
{
if (key == tree->key)
tree=NULL;
}
我的BSTree课程没有一个部分。只是值和左右指针。我的代码出了什么问题?谢谢!
答案 0 :(得分:1)
您没有更改实际的tree
指针。您只是更改在堆栈上分配的指针,指向与传入指针相同的地址。
您需要BSTree *&tree
以便获得对原始指针的引用,以便任何更改都会对其产生影响。
正如Als指出的那样,除了上述内容外,不要忘记释放记忆。