以下是我的代码在二叉搜索树递归地删除每个节点:递归地删除每个节点在二叉树
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