我遇到了這種方法來清除二叉搜索樹。代碼在教科書中給出。爲什麼最終必須創建並刪除節點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