Escolar Documentos
Profissional Documentos
Cultura Documentos
Red-Black
Centro
de
Inform-ca
Universidade
Federal
de
Pernambuco
Sistemas
de
Informao
Vinicius
Cardoso
Garcia
vcg@cin.ufpe.br
rvore
Red-Black
Uma
rvore
Red-Black
uma
rvore
Binria
de
Busca
com
um
bit
extra
de
armazenamento
por
nodo
que
indica
sua
cor:
preta
ou
vermelha
rvore
Red-Black
A
idia
restringir
a
forma
como
os
nodos
podem
ser
coloridos
em
qualquer
caminho
da
raiz
at
as
folhas
de
tal
forma
que
nenhum
caminho
possa
ser
mais
que
duas
vezes
mais
longo
que
outro
caminho,
deste
modo
a
rvore
ca
aproximadamente
balanceada
Ns
na
rvore
Red-Black
De
forma
geral
um
n
de
uma
rvore
Red- Black
tem
os
campos:
Cor
Dados
Pai
Esquerdo
Direito
rvore
Red-Black
Uma
rvore
Binria
de
Busca
uma
rvore
Red-Black
se
ela
sa-sfaz
as
seguintes
propriedades:
1. Todo
nodo
Preto
ou
Vermelho
rvore
Red-Black
Uma
rvore
Binria
de
Busca
uma
rvore
Red-Black
se
ela
sa-sfaz
as
seguintes
propriedades:
1. Todo
nodo
Preto
ou
Vermelho
2. A
raiz
PRETA
rvore
Red-Black
Uma
rvore
Binria
de
Busca
uma
rvore
Red-Black
se
ela
sa-sfaz
as
seguintes
propriedades:
1. Todo
nodo
Preto
ou
Vermelho
2. A
raiz
PRETA
3. Todo
lho
de
uma
folha
(Null)
PRETO
rvore
Red-Black
Uma
rvore
Binria
de
Busca
uma
rvore
Red-Black
se
ela
sa-sfaz
as
seguintes
propriedades:
1. 2. 3. 4. Todo
nodo
Preto
ou
Vermelho
A
raiz
PRETA
Todo
lho
de
uma
folha
(Null)
PRETO
Se
um
n
Vermelho,
ento
ambos
os
lhos
do
PRETOS
rvore
Red-Black
Uma
rvore
Binria
de
Busca
uma
rvore
Red-Black
se
ela
sa-sfaz
as
seguintes
propriedades:
1. 2. 3. 4. Todo
nodo
Preto
ou
Vermelho
A
raiz
PRETA
Todo
lho
de
uma
folha
(Null)
PRETO
Se
um
n
Vermelho,
ento
ambos
os
lhos
do
PRETOS
5. Para
cada
n,
todos
os
caminhos
do
n
para
folhas
descendentes
contm
o
mesmo
nmero
de
ns
PRETOS
Algoritmos
e
Estrutura
de
Dados
rvores
Red-Black
2011
Vinicius
Cardoso
Garcia
rvore Red-Black
10
Altura
de
Preto
Dada
uma
rvore
red-black:
possvel
denir
a
altura
preto
de
um
n
x,
denotada
por
bh(x),
como:
Nmero
de
ns
pretos
em
qualquer
caminho
desde
um
nodo
x,
sem
incluir
esse
nodo,
at
uma
folha.
11
Prova?
12
13
14
15
16
rvore
Red-Black
As
operaes
de
Inserir
e
Remover
so
mais
complicadas
nas
rvores
Red-Black
porque
elas
podem
ferir
alguma
propriedade
deste
-po
de
rvore
Neste
caso
u-lizamos
operaes
de
rotao
para
corrigir
a
distribuio
dos
ns
e
suas
cores,
reestabelecendo
as
propriedades
17
rvore
Red-Black
As
operaes
de
Inserir
e
Remover
so
mais
complicadas
nas
rvores
Red-Black
porque
elas
podem
ferir
alguma
propriedade
deste
-po
de
rvore
Neste
caso
u-lizamos
operaes
de
rotao
para
corrigir
a
distribuio
dos
ns
e
suas
cores,
reestabelecendo
as
propriedades
Essas
operaes
podem
ser
implementadas
de
forma
bastante
parecida
com
as
rvores
Binrias
de
Busca,
bastando
apenas
modicar
as
cores
dos
ns
para
que
as
propriedades
sejam
sa-sfeitas
Algoritmos
e
Estrutura
de
Dados
rvores
Red-Black
2011
Vinicius
Cardoso
Garcia
18
Rotao
a
Esquerda
Ao
realizarmos
uma
rotao
esquerda,
em
torno
do
n
x,
suposto
que
y
no
nulo.
A
rotao
esquerda
faz
o
piv
na
ligao
entre
x
e
y.
Y
vira
a
nova
raiz
da
rvore
X
vira
o
lho
esquerdo
de
Y
O
lho
esquerdo
de
Y
vira
lho
direito
de
X
19
20
RB-INSERT(T, z)
21
RB-INSERT-FIXUP(T, z)
22
23
24
25
rvore
vlida
rvore
red-black
vlida
26
27
O
Loop
While
No
incio,
o
loop
while
tem
trs
invariantes:
O
n
z
vermelho
Se
P[z]
a
raiz,
ento
P[z]
preto.
Se
exis-r
alguma
violao
das
propriedades
red- black,
exis-r
apenas
uma
nica
violao:
Se
z
a
raiz
e
vermelha
(propriedade
2)
Se
o
pai
de
z
vermelho
e
z
vermelho
(propriedade
4)
28
Loop
Invariante
Inicializao:
Comea-se
com
uma
rvore
red-black
sem
violaes
e
comeamos
com
a
insero
de
z.
Quando
RB-INSERT-FIXUP
chamado
z
o
n
vermelho
que
foi
adcionado
Se
P[z]
a
raiz,
ete
comeou
preto
e
no
modicado
Se
houver
violaes,
so
da
propriedade
2
ou
da
propriedade
4
(exclusivamente).
29
Loop
Invariante
Trmino:
Quando
o
loop
termina,
P[z]
preto
(propriedade
4)
A
propriedade
2
garan-da
na
linha
16.
Manuteno:
S
entra-se
no
loop
se
P[z]
for
vermelho,
caso
contrrio,
P[z]
preto.
30
Inserir
e
Remover
Dada
uma
rvore
binria,
possvel
inserir
e/ ou
remover
ns
da
rvore.
Porm,
as
propriedades
da
rvore
devem
ser
man-das!
31
Analisando:
Caso
1
Z
e
P[z]
so
vermelhos
32
Anlise:
Casos
2
e
3
Caso
2:
o
-o
y
de
z
preto
e
z
lho
da
direita
Caso
3:
o
-o
y
de
z
preto
e
z
lho
da
esquerda
33
34
Removendo
Observe
que:
A
funo
RB-DELETE-FIXUP
s
invocada
caso
Z
(o
n
deletado)
seja
preto.
Caso
o
n
deletado
seja
vermelho
as
propriedades
red-black
cam
inalteradas,
visto
que:
Nenhuma
altura
preta
foi
alterada
Nenhum
n
vermelho
cou
adjacente
Se
Z
vermelho,
ento
Z
no
raiz:
Assim
a
Raiz
conQnua
preta.
35
Removendo
um
elemento
Se
o
n
y
deletado
preto,
podem
ocorrer
trs
problemas:
Se
y
era
a
raiz
e
um
lho
vermelho
de
y
se
torna
a
raiz
(viola
propriedade
2)
Se
x
e
P[y]
(que
agora
tb
P[x])
eram
vermelhos
(viola
propriedade
4)
A
remoo
de
y
faz
com
que
o
caminho
que
con-nha
y
tenha
agora
um
n
preto
a
menos
(viola
a
propriedade
5)
36
RB-DELETE-FIXUP(T, x)
37
Caso de RB-DELETE-FIXUP(T,x)
38
Caso
de
RB-DELETE-FIXUP(T,x)
Caso1:
O
irmo
w
de
x
vermelho
Caso2:
O
irmo
w
de
x
preto
e
ambos
os
lhos
de
w
so
pretos
Caso3:
O
irmo
w
de
x
preto
e
o
lho
da
esquerda
de
w
vermelho
e
o
da
direita
preto
Caso4
O
irmo
w
de
x
preto
e
o
lho
da
direita
de
w
vermelho
Algoritmos
e
Estrutura
de
Dados
rvores
Red-Black
2011
Vinicius
Cardoso
Garcia
39
Resumindo
rvores
Red-Black:
rvores
Binrias
de
Busca
com
bit
adicional
para
representar
a
cor
(PRETA
ou
VERMELHA)
Cinco
propriedades
bsicas:
Todo
n
colorido
PRETO
ou
VERMELHO.
A
raiz
PRETA.
As
folhas
(NULL)
so
PRETAS.
Se
um
n
VERMELHO,
seus
lhos
so
PRETOS.
Para
cada
n,
todos
os
caminhos
at
as
folhas
descendentes
contm
o
mesmo
nmero
de
ns.
Algoritmos
e
Estrutura
de
Dados
rvores
Red-Black
2011
Vinicius
Cardoso
Garcia
40
Resumindo
rvores
Red-Black:
Lema:
Uma
rvore
Red-Black
com
n
ns
internos
tem
altura
o
mximo
2lg(n+1)
Possui
todas
as
operaes
que
uma
rvore
binria
balanceada
comum
possui
41
Resumindo
rvores
Red-Black:
Inserir:
trs
casos
a
considerar
O
-o
VERMELHO:
inverte
cores
do
av,
pai
e
-o
O
-o
PRETO
e
lho
da
direita:
faz
rotao
para
a
esquerda
O
-o
PRETO
e
lho
esquerda:
inverte
cores
do
av
e
do
pai
e
faz
rotao
para
a
direita
42
Resumindo
rvores
Red-Black:
Remover:
quatro
casos
a
considerar
W
VERMELHO:
inverte
cores
do
pai
e
de
w.
w
PRETO
e
ambos
os
lhos
de
w
sao
pretos:
remove
um
PRETO
de
x,
faz
w
VERMELHO
e
adiciona
PRETO
ao
pai.
Faz
pai
novo
x.
w
PRETO,
o
lho
da
esquerda
VERMELHO
e
o
da
direita
PRETO:
inverte
cores
de
w
e
do
seu
lho
da
esquerda
e
faz
uma
rotao
para
a
direita.
w
PRETO
e
o
lho
da
direita
VERMELHO:
atribui
a
cor
do
pai
a
w,
faz
pai
PRETO,
faz
lho
da
direta
de
w
PRETO
e
faz
uma
rotao
para
a
esquerda.
43
AQvidades
Complementares
Leitura
do
captulo
13
do
Livro
do
Cormen
Exerccio
1
Implementar
uma
classe
do
n
red-black.
Implementar
tambm
uma
classe
de
uma
rvore
red-black
com
a
funo
de
insero
de
um
elemento.
Exerccio
2
Implementar
a
funcionalidade
de
deletar
um
n
em
uma
rvore
red-black.
Algoritmos
e
Estrutura
de
Dados
rvores
Red-Black
2011
Vinicius
Cardoso
Garcia
44
Referncias
na
Web
hp://gauss.ececs.uc.edu/RedBlack/redblack.html
hp://ww3.algorithmdesign.net/handouts/ RedBlackTrees.pdf
hp://www.cs.buap.mx/~-tab/les/ RedBlackTrees.pdf
hp://www.cs.dal.ca/~nzeh/Teaching/Fall %202003/3110/RedBlackTrees.pdf
hp://en.wikipedia.org/wiki/Red-black_tree
45