Интуитивно понятно, что «сбалансированные деревья» должны быть деревьями, где левое и правое поддеревья в каждом узле должны иметь «примерно одинаковое» количество узлов.
Конечно, когда мы говорим о том, что красно-черные деревья * (см. Определение в конце) сбалансированы, мы на самом деле имеем в виду, что они сбалансированы по высоте и в этом смысле они сбалансированы.
Предположим, мы пытаемся формализовать вышеуказанную интуицию следующим образом:
Определение: двоичное дерево называется сбалансированным, с , если для каждого узла, неравенство
имеет место и для каждого , есть некоторый узел, для которого вышеприведенное утверждение не выполняется. | N L | число узлов в левом поддереве N и | N | число узлов в дереве с N в качестве корня (включая корень).
Я полагаю, что они называются деревьями с сбалансированным весом в некоторых публикациях по этой теме.
Можно показать, что если бинарное дерево с узлами сбалансировано по (для константы ), то высота дерева равна , таким образом сохраняя хорошие свойства поиска.
Итак, вопрос в следующем:
Есть ли такие , что каждое достаточно большое красно-черное дерево имеет баланс?
Используемое нами определение красно-черных деревьев (из «Введение в алгоритмы» Кормена и др.):
Двоичное дерево поиска, где каждый узел окрашен в красный или черный цвет и
- Корень черный
- Все пустые узлы черные
- Если узел красный, то оба его потомка черные.
- Для каждого узла все пути от этого узла к дочерним узлам NULL имеют одинаковое количество черных узлов.
Примечание: мы не учитываем NULL-узлы в определении сбалансированного выше. (Хотя я считаю, что это не имеет значения, если мы делаем).
источник
Ответы:
Претензия : Красно-черные деревья могут быть сколь угодно не-μ уравновешена.
Идея доказательства : заполните правое поддерево как можно большим количеством узлов, а левое - как можно меньшим количеством узлов для заданного числаk черных узлов на каждом пути корневого листа.
Доказательство : определите последовательностьTk красно-черных деревьев, чтобы у Tk было k черных узлов на каждом пути от корня до любого (виртуального) листа. Определить Tk=B(Lk,Rk) с
Ясно, что всеTk являются красно-черными деревьями.
Например, этоT1 , T2 и T3 соответственно:
[ источник ]
[ источник ]
[ источник ]
Теперь давайте проверим визуальное впечатление огромной правой стороны по сравнению с левой. Я не буду считать виртуальные листья; они не влияют на результат.
Левое поддеревоTk является полным и всегда имеет высоту k−1 и, следовательно, содержит 2k−1 узлов. Правое поддерево, с другой стороны, полно и имеет высоту 2k−1 и, следовательно, содержит 22k−1 узлов. Теперь значение μ баланса для корня
что доказывает отсутствиеμ>0 в соответствии с запросом.
источник
Нет. Рассмотрим красно-черное дерево со следующей особой структурой.
Нетрудно убедиться, что это действительное красно-черное дерево. Но количество узлов в правом поддереве ( ) примерно равно квадрату количества узлов в левом поддереве ( 2 d + 1 - 1 ).22d+1−1 2d+1−1
источник