Mam pytanie na temat tych dwóch algorytmów:
To działa normalnie:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Ten nope:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Czemu? Muszę ustawić rootsię nulltak wskaźnik węzeł po usunięcia z BST nie będzie wskazywać na pamięć nie przydzielone. Wolę drugi algorytm ponieważ odzyskanie funkcji jest bardziej intuicyjne.
Teoretycznie oba algorytmy są równoważne, ale jeśli użyć drugiego algorytmu i próbuję wydrukować BST, program przechodzi w pętli.













