Ho una domanda di questi due algoritmi:
Questo funziona normalmente:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Questo no:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Perché? Devo impostare il rootal nullmodo che l'indicatore nodo dopo l'eliminazione del BST non punterà ad una memoria non allocata. Io preferisco il secondo algoritmo perché il richiamo della funzione è più intuitivo.
In teoria, i due algoritmi sono equivalenti, ma se uso il secondo algoritmo e cerco di stampare il BST, il programma va in un ciclo.













