Én próbálok írni egy program, mely a húrok, és elhelyezi őket egy bináris keresési fa alfabetikus sorrendben, ha ezek kerülnek be a fát, a felhasználó kéri egy szót el kell hagyni, így kiiktatva a csomópont a fáról, majd kimenet a fa nélkül, hogy node vissza sorrendben.
Minden működik, erre akár a törlés funkciót, a törlés funkció működik, de nagyon furcsa, hogy hogyan törli. Szerintem jelenleg ez törli a teljes oldalon a fa, mert amikor törli az utolsó szó, általában működik. Fogom feltölteni a törlés funkciót, és ha ennél többre van szükség tudok feltölteni a többi az én kódot.
Kösz!
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;
}
};














