Musím zavést strom binárního vyhledávání pomocí jednoho z úkolů C ++. Vytvořil jsem třídu, a pokoušel se realizovat InsertItem, PrintTree, DeleteTree metody pro třídu, myslím, že jsem udělal všechno správně, ale z nějakého důvodu můj program udržuje shazovat :(
Tady je můj kód:
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;
}
Můj posloupnost volání metod až do havárie programu:
I vložit položky F,B,G,A,D,I,C,E,H: funguje
Říkám PrintTree(): funguje
Říkám DeleteTree(): funguje
Říkám PrintTree()znovu: zhroucení programu
Z nějakého důvodu výraz if(RootNode == NULL)nevrací platí po DeleteTree()volání metody, takže program se pokusí tisknout něco, co neexistuje, a dojde k chybě. Nejsem si jistý, proč se to děje, co dělám špatně?
Veškeré pomoc je oceňována.













