मैं एक प्रोग्राम है जो तार में ले जाता है और वर्णमाला के क्रम में एक द्विआधारी खोज वृक्ष में उन्हें देता है एक बार इन पेड़ में डाला जाता है लिखने के लिए कोशिश कर रहा हूँ, एक उपयोगकर्ता को संकेत देता के लिए एक शब्द, हटाए जाने के लिए इस प्रकार के पेड़ से उस नोड को हटाने, और फिर उत्पादन उस नोड के क्रम में वापस बिना पेड़।
सब कुछ हटा समारोह अप करने के लिए इस बात के लिए काम करता है, हटाने समारोह काम करता है, लेकिन इसकी बहुत अजीब है कि यह कैसे हटा देता है। मैं वर्तमान में यह पेड़ की एक पूरी पक्ष हटाता है, क्योंकि जब मैं अंतिम शब्द हटाने के लिए, यह आम तौर पर काम करता है लगता है। मैं अपने नष्ट समारोह अपलोड करेंगे और अगर अधिक की जरूरत है मैं अपने कोड के बाकी अपलोड कर सकते हैं।
धन्यवाद!
template<typename T> void Delete(TreeNode<T>*& root, const T& data)
{
if (root == NULL)
return;
if(data < root->Value)
return Delete(root->Left, data);
else if (root->Value > data)
return Delete(root->Right, data);
else
{
TreeNode<T>* old_root = root;
if (root->Left == NULL)
{
root = root->Right;
}
else if (root->Right == NULL)
{
root = root->Left;
}
else
{
replace_parent(old_root, old_root->Left);
}
delete old_root;
}
};
template<typename T> void replace_parent(TreeNode<T>*& old_root, TreeNode<T>*& root)
{
if (root->Right != NULL)
{
replace_parent(old_root, root->Right);
}
else
{
old_root->Value = root->Value;
old_root = root;
root = root->Left;
}
};














