Am o întrebare cu privire la acești doi algoritmi:
Acest lucru funcționează în mod normal:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Acest nope:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
De ce? Am nevoie pentru a seta rootla nullastfel încât indicatorul de nod după ștergerea a BST nu va indica o memorie nu sunt alocate. Eu prefer al doilea algoritm , deoarece retragerea funcției este mai intuitiv.
Teoretic, cei doi algoritmi sunt echivalente, dar dacă am folosi de-al doilea algoritm și încerc să imprimați BST, programul merge într-o buclă.













