मैं इन दोनों एल्गोरिदम के बारे में एक प्रश्न है:
यह सामान्य रूप से काम करता है:
node* deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
return root=NULL;
}
यह नहीं:
void deleteTree(node* root)
{
if(root != NULL)
{
deleteTree(root->left);
deleteTree(root->right);
deallocateNode(root);
}
root=NULL;
}
क्यूं कर? मैं निर्धारित करने की आवश्यकता rootके लिए nullतो BST के हटाने के बाद नोड सूचक नहीं आवंटित एक स्मृति को इंगित नहीं होंगे। मैं दूसरे एल्गोरिथ्म पसंद करते हैं समारोह की याद अधिक सहज ज्ञान युक्त है, क्योंकि।
सैद्धांतिक रूप से, दो एल्गोरिदम बराबर हैं लेकिन अगर मैं दूसरे एल्गोरिथ्म का उपयोग करें और मैं BST मुद्रित करने के लिए प्रयास करते हैं, कार्यक्रम एक पाश में चला जाता है।













