0
我想從具有兩個孩子的二元搜索樹中刪除一個節點。一切正常,因爲我寫了它,但刪除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;
}
編輯: 解決方案是增加minParent->Left = nullptr;
前delete
這解決了我的問題。謝謝 – Darkstorm51
@ Darkstorm51歡迎來到StackOverflow - 如果這是正確的答案,請點擊它的複選標記。 –