gpt4 book ai didi

c++ - 二叉搜索树删除两个 child

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:10 26 4
gpt4 key购买 nike

我正在尝试从具有两个子节点的二叉搜索树中删除一个节点。一切都像我写的那样工作,但是在删除 min 之后,我在尝试打印树时遇到了问题。我的算法有什么问题吗?

void BST::DeleteTwoChild(Node * Current, Node * Parent)
{
// Declare min
Node * min = Current;
Node * minParent = NULL;
// Loop until minimum value is found
while (min->Right != nullptr)
{
minParent = min;
min = min->Right;
}
while (min->Left != nullptr)
{
minParent = min;
min = min->Left;
}

// Copy contents of min to Current (Node info being deleted)
Current->Data = min->Data;
Current->Frequency = min->Frequency;

// Delete the duplicate (min)
delete min;
}

编辑:解决方案是在 delete

之前添加 minParent->Left = nullptr;

最佳答案

如果任何其他节点仍指向它,则不应删除 min。通常您会先将该指针设置为 NULL。

关于c++ - 二叉搜索树删除两个 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34258663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com