Если для каждого узла дерева самый длинный путь от него до листового узла не более чем в два раза длиннее самого короткого, дерево имеет красно-черную окраску.
Вот алгоритм, чтобы выяснить цвет любого узла n
if n is root,
n.color = black
n.black-quota = height n / 2, rounded up.
else if n.parent is red,
n.color = black
n.black-quota = n.parent.black-quota.
else (n.parent is black)
if n.min-height < n.parent.black-quota, then
error "shortest path was too short"
else if n.min-height = n.parent.black-quota then
n.color = black
else (n.min-height > n.parent.black-quota)
n.color = red
either way,
n.black-quota = n.parent.black-quota - 1
Вот n.black-quota
количество черных узлов, которые вы ожидаете увидеть идущими к листу от узла, n
и n.min-height
расстояние до ближайшего листа.
Для краткости обозначений пусть , h ( n ) = и m ( n ) = .b(n)= n.black-quota
h(n)= n.height
m(n)= n.min-height
Теорема: Фикс бинарного дерева . Если для каждого узла п ∈ T , ч ( п ) ≤ 2 м ( п ) и для узла г = корень ( Т ) , б ( г ) ∈ [ 1Tn∈Th(n)≤2m(n)r=root(T)тогдаTимеет красно-черную окраску с ровноb(r)черными узлами на каждом пути от корня до листа.b(r)∈[12h(r),m(r)]Tb(r)
Доказательство: индукция по .b(n)
Убедитесь, что все четыре дерева высотой один или два удовлетворяют теореме с .b(n)=1
По определению красно-черного дерева, корень черный. Пусть узел с черным родителем p такой, что b ( p ) ∈ [ 1np. Тогдаb(n)=b(p)-1,h(n)=h(p)-1иh(n)≥m(n)≥m(p)-1.b(p)∈[12h(p),m(p)]b(n)=b(p)−1h(n)=h(p)−1h(n)≥m(n)≥m(p)−1
Предположим, что теорема верна для всех деревьев с корнем , b ( r ) < b ( q ) .rb(r)<b(q)
Если , то n может иметь красно-черный цвет по предположению индуктивности.b(n)=m(n)n
Если тоb(n)=⌈1b(p)=12h(p). nне удовлетворяет индуктивному предположению и поэтому должно быть красным. Пустьc- дитяn. h(c)=h(p)-2и b(c)=b(p)-1=1b(n)=⌈12h(n)⌉−1ncnh(c)=h(p)−2. Тогдасможет быть красно-черным, окрашенным индуктивным предположением.b(c)=b(p)−1=12h(p)−1=12h(c)c
Отметим, что по тем же соображениям, если , то иn,и потомокnудовлетворяют индуктивному предположению. Поэтомуnможет иметь любой цвет.b(n)∈(12h(r),m(r))nnn