Você está na página 1de 12

rvores Rubro-Negras

rvore Binria de Pesquisa (ABP) com nodos


coloridos de vermelho e preto
rvore balanceada
rvores Rubro-Negras Qualquer caminho da raiz at as folhas, nenhum caminho
(Vermelho-Preta) ser maior que duas vezes o comprimento de qualquer
outro
Aproximadamente balanceada
10
Nmero menor de rotaes/reestruturaes
Comparada com AVL 5 11

3 6

Estrutura da rvore Estrutura da rvore

Cada nodo contem os seguintes campos: Cada nodo contem os seguintes campos:
Chave Chave
Ponteiro para subrvores esquerda Ponteiro para subrvores esquerda
Ponteiro para subrvores direita 10 Ponteiro para subrvores direita 10
Cor Cor
5 11 5 11

3 6 3 6 nil nil

7 nil nil nil 7

Propriedade Propriedade nil nil


Todo nodo da rvore ou vermelho ou preto Todo nodo da rvore ou vermelho ou preto
Propriedades Propriedades - RESUMO
10
10
5 11
I. Todo nodo vermelho ou preto RAIZ 5 11
3 6 nil nil
II. A raiz preta A raiz preta
3 6 nil nil
nil nil nil 7
III. Toda folha (nil) preta NODOS EXTERNOS
nil nil nil 7
nil nil
IV. Se um nodo vermelho, ento ambos os seus Todo nodo externo preto
nil nil
filhos so pretos NODOS INTERNOS
V. Para cada nodo, todos os caminhos desde um Os filhos de um nodo vermelho so pretos
nodo at as folhas descendentes contm o PROFUNDIDADE
mesmo nmero de nodos pretos Todos os nodos externos tm a mesma profundidade
preta que definida como o nmero de ancestrais
BALANCEAMENTO
pretos menos 1

Insero

Encontra a posio na rvore


Substitui nil pelo nodo com 2 filhos nil
Primeiro nodo (RAIZ)
PRETO 50
INSERO
demais nodos
VERMELHO
Insero Insero

Encontra a posio na rvore Encontra a posio na rvore


Substitui nil pelo nodo com 2 filhos nil Substitui nil pelo nodo com 2 filhos nil
Primeiro nodo (RAIZ) Primeiro nodo (RAIZ)
20 60
PRETO PRETO
demais nodos 50 demais nodos 50

VERMELHO VERMELHO
nil nil 20 nil

nil nil

Insero regra bsica Caso 1

Encontra a posio na rvore Pai preto 55

Substitui nil pelo nodo a ser inerido


Novo nodo possui 2 filhos nil 50

Primeiro nodo (RAIZ) 40 60


PRETO 50
nil nil
demais nodos 10 45
20 60
VERMELHO
nil nil nil nil
nil nil nil nil
Caso 1 Caso 2

pai preto 55 pai vermelho 12

insere vermelho
50 50 50

40 60 40 60 40 60 Se pai no raiz
seu av preto (bvio)
nil nil
10 45 nil 10 45 55 nil 10 45 verificar a cor do tio
2 casos
nil nil nil nil nil nil nil nil nil nil nil 12 nil nil

nil nil

Caso 2.1 Caso 2.1

tio vermelho 12 Alterar as cores pai, tio e do av tio vermelho 12 Alterar as cores pai, tio e do av

50 50 50

40 60 40 60 40 60

nil nil
10 45 10 45 10 45

12 nil nil 12 nil nil nil 12 nil nil


nil nil

nil nil nil nil nil nil


Caso 2.1 Exceo RAIZ av Caso 2.1 Exceo RAIZ av

tio vermelho 12 Alterar as cores pai, tio e do av tio vermelho 12 Alterar as cores pai, tio e do av

40 40 40

10 45 10 45 10 45

12 nil nil 12 nil nil nil 12 nil nil


nil nil

nil nil nil nil nil nil

Av raiz altera para preto

Caso 2.2 (A) - rotao direita Caso 2.2 (A) - rotao direita

tio preto tio preto

5 5 4

nil nil
Rotao
4 4 3 5
direita
3 nil 3 nil nil nil nil nil

nil nil nil nil


Caso 2.2 (A) - rotao direita Caso 2.2 (B) - rotao esquerda

tio preto tio preto

5 4 4 5

nil
Rotao Troca cor
4 3 5 nil 6
direita 3 5

3 nil nil nil nil nil 7


nil nil nil nil
nil nil nil nil

Caso 2.2 (B) - rotao esquerda Caso 2.2 (B) - rotao esquerda

tio preto tio preto

5 6 5 6 6
Rotao Rotao Troca cor
nil 6 5 7 nil 6 5 7
esquerda esquerda 5 7

7 nil nil nil nil 7 nil nil nil nil nil nil nil nil

nil nil nil nil


Caso 2.2 (C) - rotao dupla direita Caso 2.2(C) - rotao dupla direita

tio preto tio preto

5 5 4
Rotao
3 nil 3 nil 3 5
dupla
direita
4 4 nil nil nil nil

nil nil nil nil

Caso 2.2 (C) - rotao dupla direita Caso 2.2 (D) - rotao dupla esquerda

tio preto tio preto

5 4 4 5
Rotao Troca cor
3 nil 3 5 3 nil 7
dupla 5
direita
4 nil nil nil nil nil nil nil nil 6

nil nil nil nil


Caso 2.2 (D) - rotao dupla esquerda Caso 2.2 (D) - rotao dupla esquerda

tio preto tio preto

5 6 5 6 6
Rotao Rotao Troca cor
nil 7 5 7 nil 7 5 7 5
dupla dupla 7
esquerda esquerda
6 nil nil nil nil 6 nil nil nil nil nil nil nil nil

nil nil nil nil

Insero - resumo

Raiz Problema:
Problema:
Preto DUPLO
DUPLO VERMELHO
VERMELHO
Demais filhos
vermelhos REMOO
Caso 01 pai preto
Insere vermelho
Caso 02 pai vermelho
Tio Vermelho
troca cor pai, tio, av
Tio Preto
rotao e troca de cores
Remoo Caso 0

Remoo nodo intermedirio Nodo vermelho


No h problema porque as cores permanecem iguais 30 30
Existe apenas a troca de valores
20 40 20 40
Nodo Vermelho
Ok! No altera o balanceamento da rvore nil nil nil nil nil nil nil nil

Nodo Preto
30 30
PROBLEMA
20 nil nil 40

Problema:
Problema: nil nil nil nil

DUPLO
DUPLO PRETO
PRETO

Caso 01 Caso 01

Irmo preto filho vermelho Irmo preto filho vermelho

30 30 30

20 40 20 40 20 nil

10 nil nil 10 nil nil 10

nil nil nil nil nil nil


Caso 01 Caso 01

Irmo preto filho vermelho Irmo preto filho vermelho

30 30 30 30
20 20 20
Rotao Rotao Trocar
20 40 20 nil 20 40 20 nil
10 10 cor 10
30 30 30
10 nil nil 10 10 nil nil 10
nil nil nil nil nil nil nil nil nil nil nil nil
nil nil nil nil nil nil nil nil

Caso 02 Caso 02

Irmo preto dois filhos pretos Irmo preto dois filhos pretos

30 30 30
Trocar
cor
20 40 20 40 20 nil

nil nil nil nil nil nil nil nil nil nil
Caso 02 Caso 02

Irmo preto dois filhos pretos Irmo preto dois filhos pretos
... ...
30 30 30 30
Trocar Trocar
cor cor
20 40 20 nil 20 40 20 nil

nil nil nil nil nil nil nil nil nil nil nil nil

30 30
Trocar 30
20 40 20 40 Cor
20 nil
nil nil nil nil nil nil nil nil
nil nil

Caso 03 Caso 03

Irmo vermelho Irmo vermelho

30 30 20
Rotao
20 40 20 40 10 30

10 nil nil 10 nil nil nil nil nil nil

nil nil nil nil


Demos

http://webpages.ull.es/users/jriera/Docencia/AVL/
AVL%20tree%20applet.htm
http://people.ksp.sk/~kuko/bak/

Você também pode gostar