我遇到了这种方法来清除二叉搜索树。代码在教科书中给出。为什么最终必须创建并删除节点temp?为什么不删除这个subroot而不是将其设置为null?清除二叉搜索树
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;
}
提示:'sub_root'通过引用传递。这是**从字面上** 10分钟前:[链接](http://stackoverflow.com/questions/16255235/using-free-on-ac-struct/16255294#16255294) – 2013-04-27 18:06:32
@ H2CO3是的,但为什么存储sub_root至temp,因为您传递sub_root->向左或向右而不是sub_root。 – 2013-04-27 18:20:04
@Armin因为有'sub_root = NULL;'语句。 – 2013-04-27 18:20:57