Van egy kérdés két algoritmus:
Ez normálisan működik:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Ez dehogy:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Miért? Meg kell állítani a roothogy nullígy a csomópont mutató után a törlés a BST nem utalnak arra, hogy a memória nem osztottak. Inkább a második algoritmus miatt visszahívja a funkció intuitív.
Elméletileg, a két algoritmus ekvivalens, de ha csak a második algoritmus és nyomtatni próbálok a BST, a program megy a hurok.













