Red Black Tree Destructor

У меня есть небольшая проблема с моим деструктором Red Black Tree. Остальная часть кода работает нормально, но каждый раз, когда я выхожу из main, я получаю segfault. Это то, что я до сих пор:

RBTree::~RBTree() {
    delete root;
    delete nil;
}

RBTree::Node::~Node() {
    delete key;
    delete value;
    color = 0;
    delete left;
    delete right;
}

Идея заключалась в том, чтобы рекурсивно удалить дерево, удалив левый и правый узел в деструкторе. Тем не менее, казалось бы, это вызвало бесконечный цикл моего кода. Я попытался изменить свой деструктор Node на это:

RBTree::Node::~Node() {
    delete key;
    delete value;
    color = 0;
    if ((left != nil)) {
        delete left;
    }
    if ((right != nil)) {
        delete right;
    }
}

Однако это, по-видимому, "недопустимое использование нестатического члена данных" (узел *nil). Может кто-нибудь сказать мне, как правильно реализовать деструктор в этом случае? Спасибо!

0 ответов

Другие вопросы по тегам