Ik ben op zoek naar een programma dat draait in strings en plaatst ze in een binaire zoekboom in alfabetische volgorde zodra deze in de boom worden ingevoegd schrijven, een gebruiker vraagt om een woord te worden geschrapt, dus dat knooppunt van de boom te verwijderen, en vervolgens uitgang van de boom zonder dat knooppunt weer op orde.
Alles werkt voor deze tot aan de delete-functie, de delete-functie werkt wel, maar het is heel raar hoe het verwijdert. Ik denk momenteel schrapt een volledige kant van de boom, want toen ik het laatste woord te verwijderen, het meestal werkt. Ik zal mijn wisfunctie te uploaden en als er meer nodig is, kan ik de rest van mijn code te uploaden.
Bedankt!
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;
}
};














