структуры данных — красно-черная вставка дерева — проблема рекурсии

У меня есть метод рекурсивной вставки, который реализуется в красно-черном дереве. После возвращения из рекурсивного вызова я пытаюсь увидеть, является ли дочерний элемент локального корня красным. Но на самом деле я проверяю корень дерева, а не поддерево (где произошла самая последняя вставка).

Вот фрагмент кода, который я смотрю и который находится внутри метода insertNode:

this->insertNode(root->right, value);
if(root->right->is_red) {
cout << "color again & " << root->data << endl;
root->right->is_red = false;
root->is_red = true;
this->rotateLeft(root);
}

Как я могу работать с корнем поддерева, где произошла последняя вставка? Нужно ли мне убедиться, что это сделано, прежде чем я вернусь с рекурсивного вызова?

2

Решение

Измените insertNode так, чтобы он возвращал фактический вставленный узел. Вы сможете легко добраться до своего родителя после вставки (при условии, что этот узел знает своего родителя).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]