Ciao a tutti!
qualcuno può spiegarmi la differenza tra questi due algoritmi ricorsivi e perchè uno funziona e l'altro no pur essendo teoricamente equivalenti?:
codice:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
codice:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
gli algoritmi si occupano di eliminare tutti i nodi di un albero. Il primo non funziona (quando si prova a stampare l'albero eliminato vengono stampati caratteri a caso infiniti come se la radice non fosse impostata a null) mentre il secondo sì. Perchè? teoricamente sono equi valenti no?