Tamam bu yüzden sabit olduğunu düşündüm, ama tamamen tutarsız sonuçlar alıyorum. Taze başlatmak için sıfırdan tür yeniden yazdım ve burada benim sonuçlarıdır. Ben hiç hata yok, ölmek üzere olsun, sadece bunları kaldırmaz. Sadece tamamen ağaca messes ve bana bir ton daha yaprakları verir ve her şeyi birbirine karıştırır. gidecek başka emin değil
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;
}













