从 BST 中删除唯一的节点

Delete the only node from a BST

本文关键字:节点 唯一 删除 BST      更新时间:2023-10-16

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

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

而且我的BSTree类没有parrent部分。只是值和左右指针。我的代码有什么问题?谢谢!

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

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

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