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). Может кто-нибудь сказать мне, как правильно реализовать деструктор в этом случае? Спасибо!