BSTКрасно-черные деревьяRBTДеревья
2 мин чтение
Двоичные деревья поиска (BST) и Красно-чёрные деревья (RBT)
Операции на BST: поиск, вставка, удаление элемента (3 случая), поиск предшественника и преемника. Красно-чёрные деревья: 5 инвариантов, левые и правые повороты, балансировка и строгая гарантия высоты h <= 2 log2(N+1).
Исходная заготовка: полнота объяснения и примеров ожидает редакторской проверки.
1. Двоичное дерево поиска (BST)
Свойство BST: Для любого узла , ключи в левом поддереве , а ключи в правом поддереве .
Удаление узла из BST (3 случая):
2. Красно-чёрное дерево (Red-Black Tree)
Красно-чёрное дерево — сбалансированное двоичное дерево поиска, гарантирующее высоту за счет 5 свойств:
NIL) — чёрные;
cpp
// Левый поворот вокруг узла x
void leftRotate(Node*& root, Node* x) {
Node* y = x->right;
x->right = y->left;
if (y->left != nullptr) y->left->parent = x;
y->parent = x->parent;
if (x->parent == nullptr) root = y;
else if (x == x->parent->left) x->parent->left = y;
else x->parent->right = y;
y->left = x;
x->parent = y;
}
Что дальше?
Вернитесь к обучению и выберите следующий материал.
Изучено — к обучению →Отметка сохранится в этом браузере. Её можно отменить или снять кнопкой «Изучено».