Красно-черное дерево

Красно-черное дерево
Красно-чёрное дерево

Красно-чёрное дерево (Red-Black-Tree, RB-Tree) — это одно из самобалансирующихся двоичных деревьев поиска, гарантирующих логарифмический рост высоты дерева от числа узлов и быстро выполняющее основные операции дерева поиска: добавление, удаление и поиск узла. Сбалансированность достигается за счет введения дополнительного атрибута узла дерева — «цвет». Этот атрибут может принимать одно из двух возможных значений — «чёрный» или «красный». Красно-чёрное дерево обладает следующими свойствами:

  1. Корень должен быть чёрным.
  2. Потомки красного узла должны быть чёрными.
  3. На всех ветвях дерева, ведущих от его корня к листьям, число чёрных узлов одинаково.

При этом для удобства листьями красно-чёрного дерева считаются фиктивные «нулевые» узлы, не содержащие данных.

Из указанных свойств можно вывести, что высота дерева ограничена логарифмической функцией от числа узлов. Есть такие алгоритмы выполнения операции добавления узлов (INSERT) и удаления узла (DELETE), которые поддерживают свойства красно-чёрного дерева, а значит и свойство сбалансированности высоты.

Красно-чёрные деревья являются наиболее активно используемыми на практике самобалансирующимися деревьями поиска. В частности, контейнер map библиотеки STL, также как и многие другие реализации ассоциативного массива в различных библиотеках, основан на красно-чёрных деревьях.

Популярность красно-чёрных деревьев связана с тем, что на них достигается подходящий баланс между степенью сбалансированности и сложностью поддержки сбалансированности. В частности, при сравнении с идеально сбалансированными деревьями обнаруживается, что последние имеют слишком жесткое условие сбалансированности и при выполнении операций модификации дерева много времени тратится на поддержание необходимой сбалансированности.

Связь с B-деревьями

Красно-чёрное дерево можно рассматривать как двоичное дерево, построенное из B-дерева с максимальным количеством потомков у любой вершины = 4, по следующим правилам:

  1. Каждый узел окрашен либо в красный, либо в чёрный цвет.
  2. Вершина с количеством потомков <= 2 переносится в бинарное дерево без изменений (и окрашивается в чёрный цвет).
  3. К вершине с количеством потомков = 3 первый потомок присоединяется непосредственно, а другие два - через соединительный узел (соединительные узлы окрашиваются в красный цвет, остальные остаются чёрными).
  4. К вершине с количеством потомков = 4 потомки присоединяются через 2 соединительных узла (красного цвета) (по два к каждому).

Таким образом получаем бинарное дерево, являющееся моделью B-дерева с максимальным количеством потомков у вершины = 4.


В исходном B-дереве (так как оно сбалансировано) все пути от корня до любого листа имеют одинаковую длину. По построению очевидно, что любой путь в RB-дереве возрастает не более чем в два раза. Таким образом, можем получить минимальный путь, равным по длине пути в исходном дереве, и максимальный, превышающий по длине путь в исходном дереве в два раза.


См. также

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Красно-черное дерево" в других словарях:

  • Двоичное дерево поиска — Тип Дерево Временная сложность в О символике В среднем В худшем случае Расход памяти O(n) O(n) Поиск O(h) O(n) Вставка O(h) O(n) Удаление O(h) O(n) где h высота дерева …   Википедия

  • Матричное дерево — Файл:Matr tree.png Матричное дерево Матричное дерево (англ. matrix tree) – это одно из самобалансирующихся двоичных деревьев поиска, обеспечивающих логарифмический рост высоты дерева от числа узлов. Матричное дерево состоит из корневого… …   Википедия

  • Шри-Ланка — Демократическая Социалистическая Республика Шри Ланка, гос во в Юж. Азии, на о. Шри Ланка. Название от санскр. шри славный, великолепный, благословенный , ланка земля . До 1972 г. называлось Цейлон. В основе этого названия санскр. Синхала двипа… …   Географическая энциклопедия

  • Лаос — Лаосская Народно Демократйческая Республика, гос вс в Юго Вост. Азии. Название от наименования народности лао, составляющей значительную часть населения страны. Географические названия мира: Топонимический словарь. М: АСТ. Поспелов Е.М. 2001.… …   Географическая энциклопедия

  • Подотряд Разноядные жуки (Polyphaga) —          Этот подотряд гораздо обширнее первого. Как это отражено в названии подотряда, пищевые связи его представителей могут быть самыми разнообразными. Он включает основную массу жесткокрылых и делится на большое число семейств.… …   Биологическая энциклопедия

  • Семейство врановые —         Врановые живут во всех частях света и на всех широтах и высотах на горах. К экватору число видов значительно увеличивается, но и в умеренном поясе их довольно много и только в холодном число видов их ограниченно. Большинство их живут… …   Жизнь животных

  • КРАСКИ — КРАСКИ, химич. вещества, обладающие свойством окрашивать другие предметы в свой или другой цвет непосредственно или с помощью другого хим. соединения протравы. Широкое применение К., надо полагать, вызывается инстинктивным стремле нием человека к …   Большая медицинская энциклопедия

  • Гармония красок — Под этим разумеют сочетание цветных поверхностей, производящее приятное впечатление, заимствуя его обозначение из языка звуковых впечатлений, который, со своей стороны, нередко пользуется словами языка зрительных ощущений. Те и другие ощущения… …   Энциклопедический словарь Ф.А. Брокгауза и И.А. Ефрона

  • Семейство вьюрковые —          Однажды в августе, рассказывает Одюбон, когда я с трудом плелся вдоль берега реки Могаук, меня застигла ночь. Я был мало знаком с этой частью страны и решил поэтому переночевать там, где находился. Вечер был прекрасный и теплый, звезды… …   Жизнь животных

  • Подсемейство Настоящие ужи (Colubriпае) —          К этому обширному подсемейству относят подавляющее большинство рассматриваемых змей (более 1400 видов). Они характеризуются стройным и длинным телом с более или менее явственно отделенной от шеи небольшой продолговатой головой, покрытой… …   Биологическая энциклопедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»