У меня есть вопрос об этих двух алгоритмов:
Это работает нормально:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Это Нету:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Зачем? Мне нужно установить , rootчтобы nullтаким образом указатель узла после удаления из BST не будет указывать на память не выделяется. Я предпочитаю второй алгоритм , поскольку отзыв функции является более интуитивным.
Теоретически, два алгоритма эквивалентен, но если я использую второй алгоритм, и я пытаюсь напечатать BST, программа переходит в петле.













