Am încercat să scrie un program care ia în șiruri și le plasează într-un arbore binar de căutare în ordine alfabetică odată ce acestea sunt inserate în copac, un utilizator solicită un cuvânt să fie șters, ștergând astfel acel nod din copac, și apoi ieșire copac fără acel nod din nou în ordine.
Totul funcționează pentru până la funcția de ștergere, funcția de ștergere nu funcționează, dar ei foarte ciudat cum se șterge. Cred că în prezent se șterge o parte plină de copac, pentru că atunci când am șterge ultimul cuvânt, funcționează în mod obișnuit. Voi încărca funcția mea de ștergere și, dacă este nevoie de mai multe pot încărca restul codul meu.
Mulțumiri!
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;
}
};














