Je suis en train d'écrire un programme qui prend dans les chaînes et les place dans un arbre de recherche binaire dans l'ordre alphabétique, une fois ceux-ci sont insérés dans l'arbre, un utilisateur invite à entrer un mot à supprimer, en supprimant ainsi ce nœud de l'arbre, puis l'arbre de sortie sans ce noeud dans l'ordre.
Tout fonctionne pour cette fonction jusqu'à la suppression, la fonction de suppression fonctionne, mais son très bizarre comment il supprime. Je pense actuellement qu'il supprime un côté complet de l'arbre, parce que quand je supprime le dernier mot, cela fonctionne généralement. Je vais télécharger ma fonction de suppression et s'il en faut plus que je peux télécharger le reste de mon code.
Merci!
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;
}
};














