Jeg prøver å skrive et program som tar i strenger og plasserer dem i et binært søketre i alfabetisk rekkefølge når disse er satt inn i treet, ber en bruker for ett ord som skal slettes, og dermed slette noden fra treet, og deretter utgangen treet uten at noden tilbake i rekkefølge.
Alt fungerer for opp til slettefunksjonen, gjør slettefunksjonen arbeid, men det er veldig merkelig hvordan det slettes. Jeg tror tiden det sletter en hel side av treet, fordi når jeg sletter det siste ordet, det vanligvis fungerer. Jeg vil laste opp min slettefunksjonen, og hvis mer er nødvendig jeg kan laste opp resten av min kode.
Takk!
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;
}
};














