Você está na página 1de 32

rvore Vermelho-Preta

Estrutura de Dados II
Jairo Francisco de Souza

Introduo
As rvores Vermelho-preto so rvores
binrias de busca
Tambm conhecidas como Rubro-negras
ou Red-Black Trees
Foram inventadas por Bayer sob o nome
rvores Binrias Simtricas em 1972,
10 anos depois das rvores AVL

Introduo
As rvores vermelho-preto possuem um bit
extra para armazenar a cor de cada n, que
pode ser VERMELHO ou PRETO
Alm deste, cada nodo ser composto ainda
pelos seguintes campos:

valor (os dados do nodo)


fe (filho esquerdo)
fd (filho direito)
pai

Introduo
Ela complexa, mas tem um bom pior-caso de
tempo de execuo para suas operaes e
eficiente na prtica: pode-se buscar, inserir, e
remover em tempo O(log n), onde n o nmero
total de elementos da rvore. De maneira
simplificada, uma rvore rubro-negra uma
rvore de busca binria que insere e remove de
forma inteligente, para assegurar que a rvore
permanea aproximadamente balanceada.

Introduo
Uma rvore Vermelho-preto com n ns
internos tem altura mxima de 2
log(n+1)
Por serem balanceadas as rvores V-P
possuem complexidade logartmica em
suas operaes: O (log n)

Propriedades
1.
2.
3.
4.
5.

Todo n vermelho ou preto


A raiz preta
Toda folha (Nil) preta
Se um n vermelho, ento os seus filhos so pretos
Para cada n, todos os caminhos do n para folhas
descendentes contm o mesmo nmero de ns PRETOS.
Quanto raiz: Ser sempre preta uma regra usada em
algumas definies. Como a raiz pode sempre ser
alterada de vermelho para preto, mas no sendo vlido o
oposto, esta regra tem pouco efeito na anlise.

Propriedades
Um n que satisfaz os itens acima
denominado equilibrado, caso contrrio dito
desequilibrado.
Em uma rvore rubro-negra todos os ns esto
equilibrados

Uma condio bvia obtida das propriedades


que num caminho da raiz at uma sub-rvore
vazia no pode existir dois ns rubros
consecutivos

Propriedades
Formas de representao

Propriedades
Formas de representao

Propriedades
Cada vez que uma operao for realizada
na rvore, o conjunto de propriedades
testado
Caso alguma no seja satisfeita, so
realizadas rotaes e/ou ajustes de cores,
de forma que a rvore permanea
balanceada

Propriedades
Altura negra: nmero de ns negros
encontrados at qualquer n folha
descendente
18 4
10 3

22 3

3 3
2

13 3
2

12
2

20 2

27 2

16 2 19 2 21 1 24 1 40

14 2 17

Insero
As operaes Inserir e Remover so mais complicadas nas rvores
Rubro-Negras porque elas podem ferir alguma propriedade deste
tipo de rvore.
Como veremos, essas operaes podem ser implementadas de
forma bastante parecida com as respectivas operaes nas rvores
Binrias de Busca, bastando apenas modificar as cores dos ns
para que as propriedades de rvores Rubro-Negras sejam
satisfeitas.
Como a insero e a remoo propriamente ditas j foram vistas
para rvores Binrias de Busca, veremos apenas o que
necessrio para acertar as cores da rvore.

Insero
Um n inserido sempre na cor vermelha, assim, no altera
a altura negra da rvore
Se o nodo fosse inserido na cor preta, invalidaria a
propriedade 5, pois haveria um nodo preto a mais em um
dos caminhos

p
x

Insero
A operao de insero em uma rvore
rubro-negra comea por uma busca da
posio onde o novo nodo deve ser
inserido, partindo-se da raiz em direo
aos nodos que possuam o valor mais
prximo do qual vai ser inserido

Insero
Caso 1: Caso esta insero seja feita em
uma rvore vazia, basta alterar a cor do
nodo para preto, satisfazendo assim a
propriedade 2
p

Exemplo
Caso 2: Ao inserir x, se o tio de x
vermelho, necessrio fazer a
recolorao de a, t e p
Obs1: Se o pai de a
a

a
t

p
x

p
x

vermelho, o
rebalanceamento
tem que ser feito
novamente
Obs2: Se a raiz, ento
ele deve ser preto!

Exemplo
Caso 3: Suponha que o tio do elemento inserido preto.
Neste caso, para manter o critrio (4) preciso fazer
rotaes envolvendo a, t, p e x.
H 4 subcasos que correspondem s 4 rotaes
possveis:

Exemplo
Caso 3a: Rotao Direita
p

a
p

a
t

x
Recolorao de p e a

Exemplo
Caso 3b: Rotao Esquerda
p

a
t

t
x

Recolorao de p e a

Exemplo
Caso 3c: Rotao Dupla Esquerda
Pode ser visto como um caso 3a seguido
do caso 3b
a

a
t

x
a

t
Rotao simples esquerda

Rotao simples
direita

Recolorao de x e a

Exemplo
Caso 3d: Rotao Dupla Direita
Pode ser visto como um caso 3b seguido
do caso 3a
a

a
t

t
p

Rotao simples esquerda

t
Rotao simples
direita
Recolorao de x e a

Exemplo
Estado inicial da rvore
2
1

4
3

5
6

Exemplo
Insero do nodo 7
2
1

4
3

5
6
Violao da propriedade 4

Exemplo
Rotao esquerda dos nodos 5,6 e 7
2
1

4
3

6
5

Exemplo
Alterao de cor dos nodos 5 e 6
2
1

4
6

3
5

Exemplo 2
Estado inicial da rvore

Caso 2: O tio do elemento inserido


VERMELHO

Insero do nodo 4
Vilolao da propriedade 4

Caso 3b: O tio do elemento


PRETO e o elemento filho
direita

Nodos 5 e 8 passam a ser pretos


Outra violao da propriedade 4 entre os nodos 2 e 7
Necessria uma rotao esquerda

Caso 3a: O tio do elemento


PRETO e o elemento filho
esquerda

Realizada a rotao, o filho esquerda do nodo 7


passa a ser filho direita do nodo 2
Necessria rotao direita.

Exemplo

Realizada uma rotao direita, o filho direita do nodo 7


passa a ser filho esquerda do nodo 11
O nodo 7 colorido de preto, restaurada a propriedade 4
e nenhuma outra violada

Aplicaes
A rvore VP, assim com a AVL, necessita de no mximo 1 rotao para
balancear na insero. Pode ter log(n) trocas de cores.
Na remoo, a VP faz no mximo 1 rotao (simples ou dupla), enquanto a
AVL pode fazer log(n) rotaes.
A rvore VP tem melhor pior caso que a rvore AVL.
Isso faz com que a rvore seja utilizada em aplicaes de tempo real (crticas)
AVL uma estrutura mais balanceada que a VP, o que leva a AVL a ser mais lenta
na insero e remoo, mas mais rpida na busca.
Pode ser usada para construir blocos em outras estruturas de dados que precisam
de garantias no pior caso. Por exemplo: estruturas de dados em geometria
computacional podem ser baseadas em rvores VP.

Exerccio
Inserir:
41 38 31 12 19 8

Você também pode gostar