致力於在C++中實現我自己的BST,以便處理這些結構。二進制搜索樹破壞者
我在執行析構函數時遇到了麻煩。我在我的研究中發現,一個人不能真正擁有一個遞歸析構函數(由於一個標誌不允許析構函數被調用後在同一個對象上調用),但我並不確定任何以其他方式成功清理樹中的所有節點。
爲了彌補,我創建了一個輔助函數 - 但是這會在'delete n'行引發一個無法解析的外部錯誤。有小費嗎?
代碼:
void BinSearchTree::Clear(tNode* n)
{
if (n->left != NULL)
Clear(n->left);
if (n->right != NULL)
Clear(n->right);
delete n;
n = NULL;
size--;
}
它與問題無關,但您不需要將變量'n'設置爲NULL,因爲它在函數中不再被訪問。 –
@JoachimPileborg null狀態的設置只是因爲可以獨立於析構函數調用Clear來重置樹。我最初測試的是缺少一個有效的根指針,以確定樹是否已初始化,然後再讓大小數據成員跟蹤這些事情。 – DivinusVox
出於好奇,有沒有人知道如果大小通常是樹的標準實現跟蹤值?我看不到它的用處,因爲在模型上迭代循環是不現實的。 – DivinusVox