Привет, я пишу двоичное дерево на c ++, и у меня возникли проблемы с удалением всех узлов. Я попытался использовать следующую функцию для этого:
void RemoveAll() { RemoveAll(Root); }
void RemoveAll(Node *node)
{
if (!node) return;
RemoveAll(node->Left);
RemoveAll(node->Right);
delete node;
}
И мои функции печати:
void PreOrder() { PreOrder(Root); }
void PreOrder(Node *node)
{
if (!node) return;
std::cout << node->Element << std::endl;
PreOrder(node->Left);
PreOrder(node->Right);
}
void InOrder() { InOrder(Root); }
void InOrder(Node *node)
{
if (!node) return;
InOrder(node->Left);
std::cout << node->Element << std::endl;
InOrder(node->Right);
}
void PostOrder() { PostOrder(Root); }
void PostOrder(Node *node)
{
if (!node) return;
PostOrder(node->Left);
PostOrder(node->Right);
std::cout << node->Element << std::endl;
}
Проблема заключается в том, что если я потом запусту функцию печати, чтобы увидеть, если узлы действительно удалено, я получаю исключение, которое говорит мне, что данный узел был 0xFFFFFFFFFFFFFFF7
. Есть идеи почему? Заранее спасибо.