Árvores Binárias de Busca...

41
Árvores Binárias de Busca Balanceadas 04/04/2018 1 2 1 3 6 5 7 10 9 11 13 14 15 4 8 12 10 9 8 7 6 5 4 3 2 1 O(n) O(log(n))

Transcript of Árvores Binárias de Busca...

Page 1: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvores Binárias de Busca Balanceadas

04/04/2018 1

2

1 3

6

5 7

10

9 11

13

14 15

4

8

12

10

9

8

7

6

5

4

3

2

1

O(n)O(log(n))

Page 2: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Número mínimo de nós numa árvore cheia de altura h

04/04/2018 © 2011 DI, PUC-Rio • Estruturas de Dados Avançadas • 2011.2 2

2

1 3

6

5 7

10

9 11

13

14 15

4

8

12

1 3 5 7

2

4

6

1 3

2

1

!" ℎ = !" ℎ − 1 + 2)

!" ℎ = 1 + 2* + 2+ + 2, + ⋯+ 2) = 2).* − 1

ℎ = 0

ℎ = 1

ℎ = 2

ℎ = 3

Page 3: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Balanceamento de Árvores Binárias de Busca

motivação:fazer busca em O(log(n))

objetivo:• diminuir a altura da árvore mantendo o número de

nós.

• diminuir a diferença de altura entre a sub-árvore à esquerda (he) e a sub-árvore à direita (hd)

|hd – he| = pequeno

04/04/2018 3

sae sad

Page 4: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvores Rubronegras

1. Todo nó é vermelho ou preto2. A raiz é preta3. As folhas são os nós NULL e são pretas4. Nós vermelhos só tem filhos pretos5. Todos os caminhos a partir da raiz da árvore até

suas folhas passa pelo mesmo número de nóspretos

São árvores auto-ajustáveis, que procuram manter o balanceamento de forma automáticamediante as seguintes restrições:

Page 5: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvores Rubronegras

Estas restrições garantem que o maior caminho entre a raiz e as folhas é no máximo o dobro do menor caminho.

Elas garantem um balanceamento razoável

Page 6: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvore Red-Black - definição

Altura negra (rank) de um nó:número de arestas pretas de qualquer caminho

desde o nó até um nó externo

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 6

80

70

65

60

62

50

10

5

0

1

1

2

2

1

1

0

0

1

1

0

0 0

0

0

0

Page 7: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvore Red-Black - conceitos

r = rank da raiz (2)h = altura da árvore sem nós externos (3 = 2r-1)

n = número de nós (8)

h £ 2r

n ³ 2r – 1

h £ 2 log2(n+1)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 7

80

70

65

60

62

50

10

5

0

1

1

2

2

1

1

0

0

1

1

0

0 0

0

0

0

Page 8: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvore Red-Black - conceitos

Sejam P e Q dois caminhos da raiz até nós externos:

comprimento(P) £ 2´comprimento(Q)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 8

80

70

65

60

62

50

10

5

0

1

1

2

2

1

1

0

0

1

1

0

0 0

0

0

0

Page 9: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Formas de representação

h(11)=4

bh(11)=2

Page 10: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Formas de representação

h(11)=4

bh(11)=2

Page 11: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvore Red-Black - busca

igual à busca numa árvore binária de busca

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 11

Page 12: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Notação

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 12

x // nó correntep = x->pai // paia = p–>pai // avôb = a->pai // bisavôt = a–>esq ou a->dir // tiofe = x–>esq // filho à esquerdafd = x–>dir // filho à direitai = p–>esq ou p->dir // irmãose = i–>esq // sobrinho a esquerdasd = i–>dir //sobrinho a direita

x

p

a

t

fe fd

i

se sd

b

Page 13: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Inserção

Ideia geral da inserção é seguir o processo de

uma ABB colorindo o novo nó vermelho, assim

se o pai for preto a inserção não viola as regras

da Red Black.

Possíveis violações:

[RB2] a raiz é preta

[RB4] p é vermelho

Vamos “consertar” a árvore de baixo para cima.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 13

violação de RB4

c

p

a

Page 14: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Correção da inserção

Duas maneiras de corrigir a violação das

regras RB: re-colorir os nós envolvidos

e/ou fazer rotações dos nós.

• Correção 1: Se o nó vermelho for a raiz,

simplesmente troque a cor. A raiz vira

preta e altura preta da árvore aumenta

de uma unidade. [recolorir]

04/04/2018 © 2018 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 14

Page 15: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Correção 2: tio vermelho

Se o pai e o tio forem vermelhos, troque a cor de

ambos para preto. Como isso aumenta a altura negra

da sub-árvore em questão, isso pode violar a RB4, por

isso mude a cor do avo para vermelho. Continue a

correção a partir do avo. A correção vai de baixo para

cima.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 15

notação XY: p é filho X {L,R} de ax é filho Y {L,R} de p

Page 16: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Tratamento por mudança de cor

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 16

tratamento: muda cor e continua com c’= a

x

p

a

tratamento: muda cor e continua com c’= a

x

p

a

ttrocacores

x’= a

x’

reavalia ancestrais

x

p

a

t

x

p

a

ttrocacores

x’=ax’

reavalia ancestrais

Note que, neste caso, não importa se c é um filho a esquerda ou a direita

Page 17: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Correção 3: tio preto

Se o tio for preto, precisamos saber se x e p são filhos

à direita ou à esquerda. Cada um dos quatro sub-casos

tem um tratamento diferente.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 17

x

p

a

LL LR

x

p

a

x

p

a

RR

x

p

a

RL

Page 18: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Tratamento LL rotação e troca de cor

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 18

tratamento: rotação e troca de cores

x

p

a

t

i

LL

x

p

a

ti

troca cores

x

p

a

ti

p->pai = b;if (b!=nil) {

if (a==b->esq) b->esq = p;

elseb->dir = p;

}

p->dir = a; a->pai = p;a->esq = i; i->pai = a;

p = x->pai;a = p->pai;b = a->paii = p->dir;

p->cor = BLACK;a->cor = RED;

Page 19: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Tratamento LR rotação dupla e troca de cor

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 19

LR

x

p

a

t

de

i

x

p a

tdei

x

p a

tdei

troca cores

c->pai = b;if (b!=nil) {

if (a==b->esq) b->esq = p;

elseb->dir =p;

}

c->esq = p; p->pai = c;c->dir = a; a->pai = c;p->dir = e; e->pai = p;a->esq = d; d->pai = a;

p = x->pai;a = p->pai;b = a->pai;i = p->esq;t = a->dir;e = x->esq;d = x->dir;

c->cor = BLACK;a->cor = RED;

Page 20: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Tratamento LR rotação dupla e troca de cor

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 20

RL

x

t

a

p

de

i

Exercício: Faça os casos simétricos

i

pt

x

RR

a

Page 21: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (1/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 21

80

90

50

10

insere 70

80

90

50

10

70

Page 22: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (2/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 22

80

90

50

10

70

insere 60

80

90

50

10

70

60

tratamento: muda cor e continua com c’= a

x

p

a

Page 23: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (3/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 23

mudança de cor

80

90

50

10

70

60x

p

a

80

90

50

10

70

60

x

p

Page 24: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (4/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 24

80

90

50

10

70

60

insere 65

60

80

90

50

10

70

65

Page 25: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (5/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 25

60

80

90

50

10

70

65LR

65

80

90

50

10

7060

x

p

a

t

de

i

Page 26: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (6/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 26

65

80

90

50

10

7060

insere 62

65

80

90

50

10

7060

62

Page 27: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (7/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 27

65

80

90

50

10

7060

62

LR mudança

de corx

p

a

65

80

90

50

10

7060

62

x

p

a

Page 28: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Exemplo (8/8)

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 28

65

80

90

50

10

7060

62RLrotação

65

80

90

50

10 7060

62

Page 29: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvore Red-Black – remoção

Como na inserção o processo segue o mesmos passos da árvore binária de busca convencional. Temos apenas que cuidar para manter as 4 regras RB.

Na remoção a esperança é que o nó x, que vai ser retirado seja vermelho para não alterarmos as alturas pretas. Quando o nó retirado for preto isso reduz o número de nós pretos nos caminhos da raiz para as folhas que ele participa. Caso isso ocorra, precisamos corrigir a árvore com mudanças de cor e/ou estrutura (rotações), como no caso das inserções.

04/04/2018© 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1

29

Page 30: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Árvore Red-Black – remoção

Como a remoção segue o processo de uma ABB, existem 3 casos para o nó x, que vai ser removido:

1. é nó folha

2. é um nó que possui uma sub-árvore

3. é um nó que possui duas sub-árvores

O caso 3 é tratado substituindo o nó que vai ser removido pelo seu sucessor na árvore. E isso não muda a estrutura nesse nó. A mudança ocorre no no nó onde estava esse sucessor que necessariamente está nos casos 1 ou 2. O sucessor é o nó mais a esquerda da sub-árvore da direita.

Casos 1 e 2 são os que temos que tratar na correção da remoção.

04/04/2018© 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1

30

Page 31: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Remoção com no máximo um filho

Seja f o filho do nó x que deve ser

removido (pode ser esquerdo ou direito).

1. Se f ou x for vermelho, f substitui x e é

marcado como preto.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 31

x

a

p

f

i

rem xf

a

p

i

Page 32: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Remoção com x e p pretos: duplo-preto

2. Se f e x forem ambos pretos, f substitui x e émarcado como duplo-preto para indicar umproblema que precisa ser corrigido. Essa correçãodeve acontecer com um nó vermelho absorvendoesse preto ou quando chegamos na raiz.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 32

x

Caso 0: o nó duplo-preto, x, é raiz

x

Solução do caso 0: torne o nó duplo-pretoapenas preto. A altura preta da árvore éreduzida de um, mas as 4 propriedades RB sãopreservadas.

Page 33: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Laço de correção de um duplo-preto

Enquanto o nó x é duplo-preto faça:

Caso 2.0: raiz

Caso 2.1: tem um irmão vermelho.

Caso 2.2: irmão preto e dois sobrinhos pretos.

Caso 2.3: irmão preto e sobrinho a esquerda é

vermelho e o a direita é preto.

Caso 2.4: irmão preto e sobrinho a direita é

vermelho (o a esquerda pode ser preto ou

vermelho).

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 33

Page 34: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Duplo preto

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 34

Caso 2.1: Irmão vermelho

Solução: rode através do pai e troque a cor do pai com o irmão. Não é um caso terminal.

Exercício: Faça o caso em que x é o filho a direita.

se sd

x

p

i

se

sd

x

p

i

se

sd

x

p

iroda em p recolore p i

Page 35: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Duplo preto

Caso 2.2: Irmão i e seus dois filhos também são pretos.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 35

Torne o irmão vermelho, x vira um preto normal e seu pai ganha um nível de preto. Se p for vermelho, vira preto e o algoritmo termina. Se p for preto ele vira duplo-preto e o algoritmo continua.

se sd

x

p

i

se sd

x

p

i

se sd

x

p

i

recolore p i

e

x

d

continua

se sd

x

p

i

recolore p i

Page 36: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Duplo preto

Caso 2.3: Irmão i é preto. O filho “zig”é vermelho.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 36

Rode em p, troque a cor de p com i, pinte de preto sd e passe x de duplo-preto para preto.

Caso terminal.

se sd

x

p

i

se

sd

x

p

i

se

sd

x

p

iroda em p troca cor (i,p)

se sd

x

p

i

se

sd

x

p

i

se

sd

x

p

iroda em p recolore i, sd

sd vira preto

sd vira preto

Page 37: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

Duplo preto

Caso 2.4: Irmão i é preto. O filho “zag”é vermelho.

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 37

Rode em i, troque a cor de i com se.

Não terminou. Continue no caso 2.3

se sd

x

p

i

roda em i troca cor (i,se)

i

sd

x

p

se se

sd

x

p

i

Page 38: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 38

Page 39: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

04/04/2018 39

x

p

a

t

x

p

a

ttrocacores

x’= a

x’

reavalia ancestrais

x

p

a

t

i

LL

x

p

a

ti

trocacoresx

p

a

ti

x

p

a

t

de

i

x

p a

tdei

x

p a

tdei

trocacores

R

B

RR

R R

B

B B

RR

R

B B

R

R B

B

R

R

BB

B

R

B B

LR B

B

BB

BR

R

R

R

B B B B

RR

B B B B

B

roda

roda

i1

i2a

i3a

Page 40: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 40

se sd

x

p

i

se

sd

x

p

i

se

sd

x

p

iroda em p recolore p i

se sd

x

p

i

se sd

x

p

i

recolore p i xcontinua

se sd

x

p

i

se sd

x

p

i

recolore p i

B

RBB

B BB

B B

BB

BB B

B

BR

BB

B

B

B BB B

R

BB

B B

B B

R

BB

BB

R

B

B B

B

B

B

B

R

r1a

r2a

Page 41: Árvores Binárias de Busca Balanceadaswebserver2.tecgraf.puc-rio.br/eda/EDA_04_AbbBalanceadas.pdfBalanceamento de Árvores Binárias de Busca motivação: fazer busca em O(log(n))

04/04/2018 © 2010 DI, PUC-Rio • Estruturas de Dados Avançadas • 2010.1 41

se sd

x

p

i

se

sd

x

p

i

se

sd

x

p

iroda em i troca cor (i,p)

se sd

x

p

i

se

sd

x

p

i

se

sd

x

p

iroda em i recolore i, sd

sd vira preto

sd vira preto

se sd

x

p

i

roda em i troca cor (i,se)

i

sd

x

p

se se

sd

x

p

i

BB

RR|B

B

B B

B

R|B

R

R|B

B

BB

B

R|B

R|B R|B R|B

R|BR|B

R

R

R RR

B

B

B

B

BBB

BB

R

R

R

B

B B

BB

BBBBB BB

r3a

r4a