Jeg har et spørsmål om disse to algoritmer:
Dette fungerer normalt:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Dette nope:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Hvorfor? Jeg må sette roottil nullså noden pekeren etter slettingen av BST vil ikke peke på et minne som ikke er tildelt. Jeg foretrekker den andre algoritmen fordi tilbakekalling av funksjonen er mer intuitiv.
Teoretisk de to algoritmer er tilsvarende, men hvis jeg bruker den andre algoritmen og jeg prøver å skrive ut BST, går programmet i en sløyfe.













