J'ai une question au sujet de ces deux algorithmes:
Cela fonctionne normalement:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Ce Nope:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Pourquoi? Je dois régler la rootpour de nullsorte que le pointeur de nœud après la suppression du BST ne pointera pas à une mémoire non allouée. Je préfère le second algorithme , car le rappel de la fonction est plus intuitive.
En théorie, les deux algorithmes sont équivalents, mais si j'utilise le second algorithme et je tente d'imprimer le BST, le programme va dans une boucle.













