Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v...

33
Árvores Rubro-Negra IFRN

Transcript of Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v...

Page 1: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Árvores Rubro-Negra

IFRN

Page 2: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Árvores Rubro-Negra

• Seja T uma árvore binária de pesquisa

• Cada nó deve estar associado a uma cor rubro

ou negra

• Uma árvore é rubro-negra quando as

seguintes condições são satisfeitas:

i. Se v é nó externo , v é negro

ii. O nó raiz é negro

iii. Se v é rubro, então ambos os filhos são negros

iv. Os caminhos de v para seus nós descendentes

externos possuem idêntico número de nós negros

Page 3: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Árvores Rubro-Negra

• Exemplo 1

10

22 6

8 3

9 7

OBS.: as propriedades acima

asseguram que o maior caminho

desde a raiz até uma folha é no

máximo duas vezes maior que o

de qualquer outro caminho até

outra folha, e portanto a árvore é

aproximadamente balanceada e

as operações básicas levarão o

tempo de O(log n)

Ex.: 14,9,10,8 = 4 nós

14,17= 2 nós

Page 4: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Árvores Rubro-Negra

• Altura negra de um nó

– É representado pelo número de nós negros

encontrados até qualquer nó folha

descendente

10

22 6

8 3

9 7

A altura negra é 2

Page 5: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

• Ao contrário da árvore AVL, temos agora vários critérios para ajustar simultaneamente

• Ao inserir um nó v numa posição vazia da árvore (nó nulo) este é pintado de rubro. Pintando o nó de rubro o critério IV é preservado, já que um nó rubro não contribui para a altura negra da árvore (hb(v))

Page 6: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

• Ex.: incluir 8

5 5

8

Page 7: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

• Quando incluímos um nó em uma árvore

Rubro-Negra, alguns ajustes podem ser

necessários. Destacamos três casos:

– Caso 1: se w, o pai de v, é negro, nada mais

precisa ser feito já que o critério IV foi

mantido

3 3

5

Page 8: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Caso 2: Suponha w rubro e t, o pai de w(avó

de v) é negro. Se u, o irmão de w (tio de v) é

rubro, ainda é possível manter o critério IV

apenas fazendo a re-coloração de t,u e w

3

3

3

3

v

w

t

u

3

3

3

3

v

w

t

u

Page 9: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Se o pai de t for rubro o processo deverá ser

repetido fazendo v=t

96

93

83

63

v

w

t

u

43

53

23 8

13

30

Page 10: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Caso 3: suponha w rubro, seu pai t é negro e

seu irmão u é negro. Neste caso, para manter

o critério III é necessário fazer rotações com

w, v, t e u. Existe 4 subcasos que

correspondem às 4 rotações possíveis

Page 11: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Caso 3a: Rotação direita simples

t

w u

v t

w

u

v

Page 12: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Caso 3b: Rotação esquerda simples

t

w u

v

Page 13: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Caso 3c: Rotação esquerda dupla

t

w u

v

Page 14: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Inserção em Rubro-Negras

– Caso 3d: Rotação direita dupla

t

w u

v

Page 15: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

– É um pouco mais complexa do que a

inserção

• Passos:

– Encontre o nó v a ser removido

– Remova o nó v da mesma forma que em uma árvore

binária de pesquisa

– Ajuste os critérios da árvore rubro-negra

Page 16: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situações

– As situações que podem ocorrer na remoção de

elementos são quatro.

Situação v sucessor

1 Rubro Rubro

2 Negro Rubro

3 Negro Negro

4 Rubro Negro

Page 17: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 1 – seja v o nó a ser removido. Sendo v rubro e x, sucessor de v, também rubro

– Nada necessita ser feito, pois a árvore Rubro-Negra continua atendendo a todos os critérios

7

2

5 1

4 x

v

Remover 2

Page 18: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 2 –v é negro e x é rubro.

– Pinte x de negro e pare.

7

2

5 1 x

v

Remover 2

Page 19: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Duplo Negro

– Ocorre após a retirada de um nó negro. O

duplo negro é uma forma de compensar a

falta do nó removido na altura negra da

árvore.

7

2

5 1 Remover 5

11

15 9

Page 20: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 3 –v é negro e x é negro.

– Caso 1: se x é negro e x tem irmão w rubro e

pai negro. Marque ele com um duplo negro e

faça o seguinte:

• Faça uma rotação simples esquerda

• Pinte w de negro

• Pinte pai de x de rubro

Page 21: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 3 – caso 1 - exemplo

7

w

8

5 9

10

x

a b

c d e f

7

w

8 5

9

10

x

a b c d

e f

Caso 2b

Page 22: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 3 –v é negro e x é negro.

– Caso 2a: se x é negro, tem irmão w negro

com filhos negros e pai negro. faça o

seguinte:

• Pinte o irmão w de rubro

Page 23: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

7

w

8

5 9

10

x

a b

c d e f

• Situação 3 – caso 2a - exemplo

7

w

8

5 9

10

x

a b

c d e f

Page 24: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 3 –v é negro e x é negro.

– Caso 2b: se x é negro, tem irmão w negro

com filhos negros e pai rubro. faça o

seguinte:

• Pinte o irmão w de rubro e o pai de x de negro

Page 25: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

7

w

8

5 9

10

x

a b

c d e f

• Situação 3 – caso 2b - exemplo

7

w

8

5 9

10

x

a b

c d e f

Page 26: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 3 –v é negro e x é negro.

– Caso 3: se x é negro, tem irmão w negro, tem

pai de qualquer cor (rubro ou negro), tem

irmão w com filho esquerdo rubro e irmão w

com filho direito negro. faça o seguinte:

• Rotação simples direita em w

• Trocar as cores de w com seu filho esquerdo

Page 27: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

7

w

8

5 9

10

x

a b

c d e f

• Situação 3 – caso 3 - exemplo

w 5

8

9

x

a b c

d

e f

10

7

Caso 4

Page 28: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 3 –v é negro e x é negro.

– Caso 4: se x é negro, tem irmão w negro, tem pai de qualquer cor (rubro ou negro), tem irmão w com filho esquerdo qualquer cor e irmão w com filho direito rubro. faça o seguinte: • Rotação simples a esquerda

• Pinte o pai de negro

• w igual a cor anterior do pai de x

• Pinte o filho direito de w de negro

Page 29: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

7

w 5

9

10

x

a b

c d e f

• Situação 3 – caso 4 - exemplo

5

7

x

a b

9

8

e f

10

c d

8

Page 30: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

• Situação 4 –v é rubro e x é negro.

– Similar à situação 3. faça o seguinte:

• Pinte x de rubro

• Proceda como na situação 3

Page 31: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

7

x

5 9

10

v

• Situação 4 – exemplo

8

7

5 10

8

x

Page 32: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

D

B I

J

• Exercício 1: remover C

G A C

F H

Page 33: Árvores Rubro-Negradocente.ifrn.edu.br/.../estruturas-de-dados/ArvRN.pdf · 2013. 3. 25. · Se v é nó externo , v é negro ii. O nó raiz é negro iii. Se v é rubro, então ambos

Remoção em Rubro-Negras

D

B N

Q

• Exercício 2: remover B

I A C

H J P R