Devo implementare un albero binario di ricerca in C ++ per una delle assegnazioni. Ho creato la classe, e cercato di attuare l'InsertItem, StampaAlberoPre, DeleteTree metodi per la classe, credo di aver fatto tutto giusto, ma per qualche motivo il mio programma blocca di continuo :(
Ecco il mio codice:
Metodo StampaAlberoPre
template <class TItem>
void BinarySearchTree<TItem>::PrintTree()
{
PrintTree(RootNode);
}
template <class TItem>
void BinarySearchTree<TItem>::PrintTree(BinarySearchTreeNode* Node)
{
if(Node == NULL)
return;
cout << Node->Data << endl;
PrintTree(Node->LeftChild);
PrintTree(Node->RightChild);
}
Metodo DeleteTree
template <class TItem>
void BinarySearchTree<TItem>::DeleteTree()
{
DeleteTree(RootNode);
}
template <class TItem>
void BinarySearchTree<TItem>::DeleteTree(BinarySearchTreeNode* Node)
{
if(Node == NULL)
return;
DeleteTree(Node->LeftChild);
DeleteTree(Node->RightChild);
delete Node;
}
La mia sequenza di chiamate di metodo fino agli crash del programma:
Inserisco elementi F,B,G,A,D,I,C,E,H: funziona bene
Chiamo PrintTree(): funziona bene
Chiamo DeleteTree(): funziona bene
Chiamo PrintTree()di nuovo: programma si blocca
Per qualche motivo l'espressione if(RootNode == NULL)non restituisce vero dopo che il DeleteTree()metodo viene chiamato, in modo che il programma tenta di stampare qualcosa che non esiste e va in crash. Io non sono sicuro perché questo sta accadendo, cosa sto facendo male qui?
C'è ne e tutto l'aiuto è apprezzato.













