以下是我的代碼在二叉搜索樹遞歸地刪除每個節點:遞歸地刪除每個節點在二叉樹
template <class T>
bool BST<T>::clear()
{
if(root == NULL)
{
cout << "Empty" << endl;
return false;
}
else
{
clearNodes(root);
return true;
}
}
template <class T>
void BST<T>::clearNodes(BTNode<T> *cur)
{
if(cur == NULL)
{
return;
}
clearNodes(cur->left);
clearNodes(cur->right);
delete cur;
}
在我的主要功能,當我嘗試打印出來的內容,檢查節點是否運行我的清除功能後刪除,不知何故,我在這裏遇到奇怪的顯示:
我可以知道我的節點實際上是通過上面的清除功能刪除?
感謝您的導遊!
'delete'不會改變你的樹結構。你所做的只是釋放內存,留下無效節點的樹。另外,'delete'不會將指針設置爲NULL,這似乎是您的代碼依賴的。 – PaulMcKenzie