Mám dotaz týkající se těchto dvou algoritmů:
To funguje normálně:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
To ani náhodou:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Proč? Musím nastavit root, aby nulltak uzel ukazatel po odstranění z BST nebude odkazovat na paměť není přidělena. Dávám přednost druhý algoritmus, protože odvolání z funkce je více intuitivní.
Teoreticky by tyto dva algoritmy jsou rovnocenné, ale pokud mohu použít druhý algoritmus a snažím se vytisknout BST, program přejde do smyčky.













