Tengo una pregunta acerca de estos dos algoritmos:
Esto funciona con normalidad:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Este nop:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
¿Por qué? Necesito fijar el roota nulllo que el puntero del nodo después de la eliminación de la BST no hará referencia a una memoria no asignada. Yo prefiero el segundo algoritmo debido a que la recuperación de la función es más intuitivo.
En teoría, los dos algoritmos son equivalentes, pero si uso el segundo algoritmo y trato de imprimir el BST, el programa va en un bucle.













