Я должен реализовать бинарное дерево поиска с использованием C ++ для одного из заданий. Я создал класс, и попытался реализовать InsertItem, PrintTree, DeleteTree методы класса, я думаю , что я сделал все правильно , но по какой - то причине , моя программа сохраняет сбой :(
Вот мой код:
Метод 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);
}
Метод 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;
}
Моя последовательность метода не вызывает до сбоев программ:
Вставить элементы F,B,G,A,D,I,C,E,H: отлично работает
Я называю PrintTree(): отлично работает
Я называю DeleteTree(): отлично работает
Я призываю PrintTree()снова: сбой программы
По какой - то причине выражение if(RootNode == NULL)не возвращает истину после того , как DeleteTree()метод вызывается, поэтому программа пытается напечатать что - то , что не существует и аварий. Я не знаю , почему это происходит, что я здесь делаю неправильно?
Любые и вся помощь оценена.













