Ben dizelerinde alır ve bu ağaca yerleştirilen bir kez alfabetik bir ikili arama ağacında yerleştiren bir program yazmaya çalışıyorum, bir kullanıcı bir kelime böylece ağaçtan bu düğümü silme Silinecek ister ve sonra çıktı geri sırayla o düğüm olmadan ağacı.
Her şey silme işlevine bunun için ayakta çalışır, silme işlevi çalışır, ancak siler nasıl onun çok garip. Ben son sözü sildiğinizde, genellikle çalıştığı için şu anda o ağacın tam tarafını siler düşünüyorum. Benim silme fonksiyonu yükleyecek ve daha gerekiyorsa benim kod kalanını yükleyebilirsiniz.
Teşekkürler!
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;
}
};














