Am să pună în aplicare un arbore binar de căutare folosind C ++ pentru una dintre misiuni. Am creat clasa, și a încercat să pună în aplicare InsertItem, PrintTree, DeleteTree metode de clasă, cred că am făcut totul bine , dar dintr- un motiv programul meu păstrează crashing :(
Iată codul meu:
Metoda PrintTree
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);
}
Metoda 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;
}
secventa mea de metoda de apeluri până la blocarea programelor:
Inserez elemente F,B,G,A,D,I,C,E,H: funcționează bine
Fac apel PrintTree(): funcționează bine
Fac apel DeleteTree(): funcționează bine
Fac apel PrintTree()din nou: program se blochează
Din anumite motive , expresia if(RootNode == NULL)nu se întoarce adevărat după DeleteTree()metoda este numit, astfel încât programul încearcă să imprime ceva ce nu există și se blochează. Nu sunt sigur de ce acest lucru se întâmplă, ce fac greșit aici?
Orice și toate ajutor este apreciat.













