Muszę wdrożyć binarne drzewo wyszukiwania przy użyciu C ++ dla jednego z zadań. I utworzeniu klasy, i próbowali realizować InsertItem, PrintTree, DeleteTree metody klasy, myślę, że zrobiłem wszystko dobrze, ale z jakiegoś powodu mój program się zawiesza :(
Tu jest mój kodu:
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;
}
Moja metoda zwraca ciąg aż do awarii programu:
Wstawić elementy F,B,G,A,D,I,C,E,H: działa dobrze
Wzywam PrintTree(): działa dobrze
Wzywam DeleteTree(): działa dobrze
Zadzwonię PrintTree()jeszcze raz: awarie programu
Z jakiegoś powodu wyrażenie if(RootNode == NULL)nie wraca po prawdziwy DeleteTree()metoda jest wywoływana, więc program próbuje wydrukować coś, co nie istnieje i awarii. Nie jestem pewien, dlaczego tak się dzieje, co robię źle tutaj?
Będziemy wdzięczni za każdą pomoc.













