Работаю над реализацией моего собственного 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--;
}