下面我发布了我正在尝试使用的代码来为二叉搜索树创建解构器。如果我在删除节点之前消除了将父节点链接到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