Деструктор двоичного дерева поиска

Работаю над реализацией моего собственного BST на C ++ для опыта работы с такими структурами.

У меня возникли проблемы с реализацией деструктора. В своих исследованиях я обнаружил, что на самом деле не может быть рекурсивного деструктора (из-за флага, который не позволяет вызывать деструктор для того же объекта после его вызова), но я не совсем уверен в каком-либо другой способ успешно очистить все узлы в дереве.

Для компенсации я создал вспомогательную функцию - однако это вызывает неразрешенную внешнюю ошибку в строке 'delete n'. Есть советы?

Код:

void BinSearchTree::Clear(tNode* n)
{
    if (n->left != NULL)
        Clear(n->left);
    if (n->right != NULL)
        Clear(n->right);
    delete n;
    n = NULL;
    size--;
}
9
задан DivinusVox 5 November 2011 в 06:55
поделиться