c++ - 清除二叉搜索树

标签 c++ binary-search-tree

我遇到了这个清除二叉搜索树的方法。代码在教科书中给出。为什么最后一定要创建和删除一个节点temp?为什么不删除子根而不是将其设为空?

void Binary_tree<Entry> :: recursive_clear(Binary_node<Entry> * &sub_root)
/* Post: The subtree rooted at sub_root is cleared. */
{
Binary_node<Entry> *temp = sub_root;
if (sub_root == NULL) return;
recursive_clear(sub_root->left);
recursive_clear(sub_root->right);
sub_root = NULL;
delete temp;
}

最佳答案

那是因为删除动态内存的标准方法是使用 delete 和 delete it's used with pointers .

关于c++ - 清除二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16255273/

相关文章:

c++ - c++11 中 3 个线程和 2 个共享资源的同步问题

c++ - Visp 库 - 如何调整图像大小

algorithm - 基于左右子树大小的平衡二叉搜索树

java - 给定一个有序的整数序列,编写一个算法来构造具有理想拓扑的二叉搜索树?

algorithm - 当我们知道大多数插入都是有序的时候创建 BBST 的策略?

C++如何使用相同的函数两次使用不同的名称和变量的不同名称

C++ 指针/列表实现

C++ 演练 cout.setf(ios::fixed);和 cout.precision();

draw - 绘制二叉搜索树或任何其他树结构的软件

python - 在 BST 中查找小于给定元素的元素数