Интуитивно понятно, что «сбалансированные деревья» должны быть деревьями, где левое и правое поддеревья в каждом узле должны иметь «примерно одинаковое» количество узлов.
Конечно, когда мы говорим о том, что красно-черные деревья * (см. Определение в конце) сбалансированы, мы на самом деле имеем в виду, что они сбалансированы по высоте и в этом смысле они сбалансированы.
Предположим, мы пытаемся формализовать вышеуказанную интуицию следующим образом:
Определение: двоичное дерево называется сбалансированным, с , если для каждого узла, неравенство
имеет место и для каждого , есть некоторый узел, для которого вышеприведенное утверждение не выполняется. | N L | число узлов в левом поддереве N и | N | число узлов в дереве с N в качестве корня (включая корень).
Я полагаю, что они называются деревьями с сбалансированным весом в некоторых публикациях по этой теме.
Можно показать, что если бинарное дерево с узлами сбалансировано по (для константы ), то высота дерева равна , таким образом сохраняя хорошие свойства поиска.
Итак, вопрос в следующем:
Есть ли такие , что каждое достаточно большое красно-черное дерево имеет баланс?
Используемое нами определение красно-черных деревьев (из «Введение в алгоритмы» Кормена и др.):
Двоичное дерево поиска, где каждый узел окрашен в красный или черный цвет и
- Корень черный
- Все пустые узлы черные
- Если узел красный, то оба его потомка черные.
- Для каждого узла все пути от этого узла к дочерним узлам NULL имеют одинаковое количество черных узлов.
Примечание: мы не учитываем NULL-узлы в определении сбалансированного выше. (Хотя я считаю, что это не имеет значения, если мы делаем).