Я должен реализовать двоичное дерево поиска, используя 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)
не возвращает true после вызова метода DeleteTree()
, поэтому программа пытается напечатать что-то, что не существует, и вылетает. Я не уверен, почему это происходит, что я делаю неправильноздесь?
Любая и вся помощь приветствуется.