Estoy tratando de escribir un programa que se lleva en las cadenas y los coloca en un árbol binario de búsqueda en orden alfabético una vez que éstos se insertan en el árbol, un usuario solicita que se desea borrar una palabra, eliminando de este modo que el nodo del árbol, y luego de salida del árbol sin que el nodo de nuevo en orden.
Todo funciona para este hasta la función de eliminación, la función de borrado funciona, pero es muy raro cómo se borra. Creo que actualmente se elimina un lado completo del árbol, porque cuando se borra la última palabra, que por lo general funciona. Voy a subir mi función de eliminación y si se necesita más que puedo subir el resto de mi código.
¡Gracias!
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;
}
};














