Ich habe eine Frage über diese beiden Algorithmen:
Dies funktioniert in der Regel:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Diese Nö:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Warum? Ich muß zum Einstellen des rootzu nullso der Knotenzeiger nach dem Löschen des BST wird nicht nicht zugeordnet auf einen Speicher verweisen. Ich ziehe den zweiten Algorithmus , da der Rückruf der Funktion intuitiver ist.
Theoretisch sind die beiden Algorithmen gleichwertig, aber wenn ich den zweiten Algorithmus verwenden und ich versuche, die BST zu drucken, geht das Programm in einer Schleife.













