Jeg må gjennomføre et binært søketre ved hjelp av C ++ for en av oppgavene. Jeg har opprettet klassen, og forsøkte å gjennomføre InsertItem, PrintTree, DeleteTree metoder for klassen, tror jeg at jeg har gjort alt riktig, men for noen grunn mitt program holder krasj :(
Her er min kode:
PrintTree Method
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);
}
DeleteTree Method
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;
}
Min sekvens av metodekall opp til programkrasj:
Jeg setter elementer F,B,G,A,D,I,C,E,H: fungerer fint
Jeg kaller PrintTree(): fungerer fint
Jeg kaller DeleteTree(): fungerer fint
Jeg kaller PrintTree()igjen: program krasjer
For noen grunn uttrykket if(RootNode == NULL)ikke returnerer sant etter at DeleteTree()metoden kalles, slik at programmet prøver å skrive ut noe som ikke eksisterer og krasjer. Jeg er ikke sikker på hvorfor dette skjer, hva gjør jeg galt her?
Enhver og all hjelp er verdsatt.













