ठीक है तो मैंने सोचा कि यह तय किया गया था, लेकिन मैं पूरी तरह से असंगत परिणाम हो रही है। मैं इसे खरोंच से एक तरह से दुबारा लिखा ताजा शुरू करने के लिए और यहाँ मेरी परिणाम हैं। मैं कोई त्रुटि, कोई क्रैश होने मिलता है, यह सिर्फ उन्हें हटाया नहीं जाता। यह बस पूरी तरह से पेड़ को खराब करता है और मुझे एक टन अधिक पत्तों देता है, और सब कुछ मिक्स। सुनिश्चित नहीं हैं कि कहाँ जाना
template <class T>
void BST<T>::remove(struct Node<T>*& root, const T& x)
{
Node<T>* ptr = root;
bool found = false;
Node<T>* parent;
while (ptr != NULL && !found)
{
if (x < ptr->data)
{
parent = ptr;
ptr = ptr->left;
}
else if (x > ptr->data)
{
parent = ptr;
ptr = ptr->right;
}
else
found = true;
}
if (found == false)
return;
else
{
if(ptr->left != NULL && ptr->right != NULL)
{
Node<T>* inOrderPtr = ptr->left;
parent = ptr;
while (inOrderPtr->right != NULL)
{
parent = inOrderPtr;
inOrderPtr = inOrderPtr->right;
}
ptr->data = inOrderPtr->data;
ptr = inOrderPtr;
}
Node<T>* subPtr = ptr->left;
if (subPtr == NULL)
subPtr = ptr->right;
else if (parent->left == ptr)
parent->left = subPtr;
else
parent->right = subPtr;
delete ptr;
}













