Я столкнулся с этим методом, чтобы очистить двоичное дерево поиска. Код приведен в учебнике. Почему в конце должен быть создан и удален узел 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;
}
Подсказка: 'sub_root' передается по ссылке. Это было задано ** буквально ** десять минут назад: [link] (http://stackoverflow.com/questions/16255235/using-free-on-ac-struct/16255294#16255294) – 2013-04-27 18:06:32
@ H2CO3 Да, но зачем хранить sub_root to temp, так как вы проходите sub_root-> влево или вправо, а не в sub_root. – 2013-04-27 18:20:04
@Armin Потому что есть инструкция 'sub_root = NULL;'. – 2013-04-27 18:20:57