Красное-чёрное дерево — различия между версиями
Строка 30: | Строка 30: | ||
|Proof = Из свойств дерева, на любом пути из вершины $x$ в лист красных вершин не больше чёрных. <br/> Отсюда $h(x) \leq 2 bh(x)$. Тогда по Л1 $n \geq 2^{bh(root)} - 1$. <br/> Отсюда $log_2 (n + 1) \geq bh(root) \geq 0.5 \cdot h(root) \rightarrow h(root) \leq 2 \cdot log_2 (n + 1)$ | |Proof = Из свойств дерева, на любом пути из вершины $x$ в лист красных вершин не больше чёрных. <br/> Отсюда $h(x) \leq 2 bh(x)$. Тогда по Л1 $n \geq 2^{bh(root)} - 1$. <br/> Отсюда $log_2 (n + 1) \geq bh(root) \geq 0.5 \cdot h(root) \rightarrow h(root) \leq 2 \cdot log_2 (n + 1)$ | ||
}} | }} | ||
+ | |||
+ | == Балансировка == | ||
+ | |||
+ | Рассмотрим, как поддерживать свойства красно-чёрного дереве при операции ''insert''. |
Версия 00:16, 13 марта 2020
Красно-чёрное дерево(англ. red-black tree) - самобалансирующееся бинарное дерево поиска (англ. Binary Search Tree, BST) со следующими свойствами:
- Каждая вершина имеет цвет: красный или чёрный
- Корень дерева - чёрный
- У каждой нелистовой вершины ровно два ребёнка
- Все листья чёрные и фиктивные
- У красной вершины оба ребёнка чёрные
- Чёрная высота каждой вершины определена корректно
Чёрная высота
На пути от любой вершины красно-чёрного дерева до её потомка-листа одинаковое количество чёрных вершин.
Чёрная высота вершины $x$ (Обозначаем $bh(x)$) - количество чёрных вершин на пути от $x$ до любого её потомка-листа, не считая самого $x$.
Высота красно-чёрного дерева
Балансировка
Рассмотрим, как поддерживать свойства красно-чёрного дереве при операции insert.