下面我發佈了我正在嘗試使用的代碼來爲二叉搜索樹創建解構器。如果我在刪除節點之前消除了將父節點鏈接到NULL的嘗試,代碼將完美運行(它不會永遠運行並正確地刪除節點)。但是,從我所瞭解的指針現在指向垃圾數據而不是NULL。我該如何解決這個問題,或者我嘗試解決這個問題時出了什麼問題? (我得到的錯誤是「無法讀取內存」)。二進制搜索樹解構器
int BinarySearchTree::postOrderTreeDelete(PhoneInfo * x)
{
static int counter = 0;
if (x == NULL)
{
return counter;
}
else
{
postOrderTreeDelete(x->getLeft());
postOrderTreeDelete(x->getRight());
//deleten(x);
if (x == x->getParent()->getLeft())
x->getParent()->setLeft(NULL);
else if (x == x->getParent()->getRight())
x->getParent()->setRight(NULL);
delete x;
counter++;
}
postOrderTreePrint();
return counter;
}
如果樹有2層或3層,會發生什麼?你用你的調試器來調試這個問題嗎? – PaulMcKenzie 2014-10-28 21:48:14
在函數名中提到「postOrder」是毫無意義的,因爲這是刪除樹的唯一合理方法。 – ooga 2014-10-28 21:48:19