Очистка бинарного дерева поиска

Я наткнулся на этот метод, чтобы очистить двоичное дерево поиска. Код приведен в учебнике. Почему в конце должен быть создан и удален временный узел? Почему бы не удалить корень вместо того, чтобы сделать его пустым?

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;
}

0

Решение

Это потому, что стандартный способ удаления динамической памяти — это удаление, и удалить это используется с указателями.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector