Meg kell végre bináris kereső fába C ++ az egyik feladatokat. Létrehoztam az osztályban, és megpróbálta megvalósítani a InsertItem, PrintTree, DeleteTree módszerek az osztályban, azt hiszem, mindent jól, de valamiért a program megtartja összeomlik :(
Itt a kód:
PrintTree eljárás
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 eljárás
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;
}
Saját sorozata metódushívások ig programösszeomlások:
Beszúrni példány F,B,G,A,D,I,C,E,H: jól működik
Hívom PrintTree(): jól működik
Hívom DeleteTree(): jól működik
Hívom PrintTree()újra: a program összeomlik
Valamilyen oknál fogva a kifejezés if(RootNode == NULL)nem tér vissza true után DeleteTree()módszert nevezik, így a program megpróbál nyomtatni valamit, ami nem létezik, és összeomlik. Nem vagyok benne biztos, hogy ez miért történik, mit csinálok rosszul van?
Bármely és minden segítséget előre is köszönjük.













