Bu iki algoritma hakkında bir sorum var:
Bu normalde çalışır:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
Bu hayır:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
Niye ya? Ben ayarlamanız gerekir rootiçin nullöylesine BST'nin silme sonra düğüm işaretçi değil ayrılmış bir belleğe işaret olmayacaktır. Fonksiyonun geri çağırma daha sezgisel olduğu için ikinci algoritma tercih ederim.
Teorik olarak, iki algoritmaları eşdeğerdir ancak ikinci algoritma kullanıyoruz ve ben BST yazdırmaya çalışırsanız, program bir döngü içinde gider.













