Se, para cada nó de uma árvore, o caminho mais longo para um nó folha não for mais do que duas vezes maior que o menor, a árvore terá uma coloração vermelho-preta.
Aqui está um algoritmo para descobrir a cor de qualquer nó 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
Aqui n.black-quota
está o número de nós pretos que você espera ver indo para uma folha, do nó n
e n.min-height
é a distância para a folha mais próxima.
Para uma brevidade da notação, sejam , h ( n ) = e m ( n ) = .b(n)= n.black-quota
h(n)= n.height
m(n)= n.min-height
Teorema: Fixar uma árvore binária . Se para cada nó n ∈ T , h ( n ) ≤ 2 m ( n ) e para o nó r = raiz ( T ) , b ( r ) ∈ [ 1Tn∈Th(n)≤2m(n)r=root(T)entãoTtem uma coloração vermelho-preta com exatamenteb(r)nós pretos em todos os caminhos, da raiz às folhas.b(r)∈[12h(r),m(r)]Tb(r)
Prova: Indução sobre .b(n)
Verifique se todas as quatro árvores de altura uma ou duas satisfazem o teorema com .b(n)=1
Por definição de árvore vermelho-preta, a raiz é preta. Seja um nó com um pai preto p tal que b ( p ) ∈ [ 1np. Entãob(n)=b(p)-b(p)∈[12h(p),m(p)] , h ( n ) = h ( p ) - 1 e h ( n ) ≥ m ( n ) ≥ m ( p ) - 1 .b(n)=b(p)−1h(n)=h(p)−1h(n)≥m(n)≥m(p)−1
Suponha que o teorema seja válido para todas as árvores com raiz , b ( r ) < b ( q ) .rb(r)<b(q)
Se , então n pode ser de cor vermelho-preto pela suposição indutiva.b(n)=m(n)n
Se entãob(n)=⌈1b(p)=12h(p). nnão satisfaz a suposição indutiva e, portanto, deve ser vermelho. Sejacum filho denb(n)=⌈12h(n)⌉−1ncn . e b ( c ) = b ( p ) - 1 = 1h(c)=h(p)−2. Entãocpode ser de cor vermelho-preto pela suposição indutiva.b(c)=b(p)−1=12h(p)−1=12h(c)c
Observe que, pelo mesmo raciocínio, se , então n e um filho de n satisfazem a suposição indutiva. Portanto, n poderia ter qualquer cor.b(n)∈(12h(r),m(r))nnn