Próbuję napisać program, który odbywa się w ciągi i umieszcza je w binarnym drzewie wyszukiwania w kolejności alfabetycznej raz te są wstawiane do drzewa, użytkownik pyta o jedno słowo ma zostać usunięty, a tym samym usunięcie tego węzła z drzewa, a następnie wyjście drzewo bez tego węzła z powrotem w porządku.
Wszystko działa za to do funkcji kasowania, funkcja kasowania działa, ale jego bardzo dziwne jak to usunie. Myślę, że obecnie usuwa pełnej strony drzewa, bo gdy usunę ostatnie słowo, to zwykle działa. Będę przesłać moją funkcję usuwania, a jeśli potrzebne jest więcej mogę przesłać resztę kodu.
Dzięki!
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;
}
};














