Ik heb een vraag over deze twee algoritmen:
Dit werkt normaal:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Dit nope:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Waarom? Ik moet stellen het rootop null, zodat het knooppunt wijzer na het verwijderen van de BST zal niet wijzen op een geheugen niet toegewezen. Ik geef de voorkeur de tweede algoritme, omdat het terugroepen van de functie is meer intuïtief.
Theoretisch, de twee algoritmen zijn gelijkwaardig, maar als ik de tweede algoritme te gebruiken en ik probeer om de BST af te drukken, gaat het programma in een lus.













