Sto cercando di scrivere un programma che prende nelle stringhe e li inserisce in un albero binario di ricerca in ordine alfabetico una volta che questi sono inseriti nella struttura ad albero, un utente richiede una parola da eliminare, eliminando in tal modo che il nodo dall'albero, e poi uscita albero senza tale nodo in ordine.
Tutto funziona per questo fino alla funzione di eliminazione, la funzione di eliminazione funziona, ma è molto strano come si cancella. Credo che attualmente si elimina un intero lato della struttura, perché quando elimino l'ultima parola, funziona in genere. Io caricare la mia funzione di cancellazione e se è necessario più che posso caricare il resto del mio codice.
Grazie!
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;
}
};














