45
Árvores RedBlack Centro de Informá-ca Universidade Federal de Pernambuco Sistemas de Informação Vinicius Cardoso Garcia [email protected] © 2011 – Vinicius Cardoso Garcia

If969 - Árvores Red-Black

Embed Size (px)

DESCRIPTION

If969 - Árvores Red-Black

Citation preview

Page 1: If969 - Árvores Red-Black

Árvores  Red-­‐Black  Centro  de  Informá-ca  Universidade  Federal  de  Pernambuco  Sistemas  de  Informação    Vinicius  Cardoso  Garcia  [email protected]  

©  2011  –  Vinicius  Cardoso  Garcia  

Page 2: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  Uma  Árvore  Red-­‐Black  é  uma  Árvore  Binária  de  Busca  com  um  bit  extra  de  armazenamento  por  nodo  que  indica  sua  cor:  preta  ou  vermelha  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

2  

Page 3: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  A  idéia  é  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  fica  aproximadamente  balanceada  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

3  

Page 4: If969 - Árvores Red-Black

Nós  na  Árvore  Red-­‐Black    •  De  forma  geral  um  nó  de  uma  árvore  Red-­‐Black  tem  os  campos:  – Cor  – Dados  – Pai  – Esquerdo  – Direito  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

4  

Page 5: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  Uma  Árvore  Binária  de  Busca  é  uma  Árvore  Red-­‐Black  se  ela  sa-sfaz  as  seguintes  propriedades:  1.  Todo  nodo  é  Preto  ou  Vermelho  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

5  

Page 6: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  Uma  Árvore  Binária  de  Busca  é  uma  Árvore  Red-­‐Black  se  ela  sa-sfaz  as  seguintes  propriedades:  1.  Todo  nodo  é  Preto  ou  Vermelho  2.  A  raiz  é  PRETA  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

6  

Page 7: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  Uma  Árvore  Binária  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  filho  de  uma  folha  (Null)  é  PRETO  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

7  

Page 8: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  Uma  Árvore  Binária  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  filho  de  uma  folha  (Null)  é  PRETO  4.  Se  um  nó  é  Vermelho,  então  ambos  os  filhos  dão  

PRETOS  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

8  

Page 9: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  Uma  Árvore  Binária  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  filho  de  uma  folha  (Null)  é  PRETO  4.  Se  um  nó  é  Vermelho,  então  ambos  os  filhos  dão  

PRETOS  5.  Para  cada  nó,  todos  os  caminhos  do  nó  para  

folhas  descendentes  contém  o  mesmo  número  de  nós  PRETOS  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

9  

Page 10: If969 - Árvores Red-Black

Árvore  Red-­‐Black  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

10  

Page 11: If969 - Árvores Red-Black

Altura  de  Preto  •  Dada  uma  árvore  red-­‐black:  – É  possível  definir  a  altura  preto  de  um  nó  x,  denotada  por  bh(x),  como:  •  Número  de  nós  pretos  em  qualquer  caminho  desde  um  nodo  x,  sem  incluir  esse  nodo,  até  uma  folha.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

11  

Page 12: If969 - Árvores Red-Black

Boas  Árvores  de  Busca  •  Lema  13.1:  – Uma  árvore  red-­‐black  com  n  nós  internos  tem  altura  máxima  de  2lg(n+1).  

•  Prova?  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

12  

Page 13: If969 - Árvores Red-Black

Boas  Árvores  de  Busca:  Prova  do  Lema  13.1  

•  Prova:  –  Primeiro  mostramos  que  a  sub-­‐árvore  com  raiz  em  qualquer  nó  x  contém  pelo  menos  2bh(x)-­‐1  nós  internos.  (Por  indução  em  bh(x))  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

13  

Page 14: If969 - Árvores Red-Black

Boas  Árvores  de  Busca:  Prova  do  Lema  13.1  

•  Prova:  –  Primeiro  mostramos  que  a  sub-­‐árvore  com  raiz  em  qualquer  nó  x  contém  pelo  menos  2bh(x)-­‐1  nós  internos.  (Por  indução  em  bh(x))  

–  Caso  Base  (bh(x)  =  0):  2bh(x)-­‐1  =  20-­‐1  =  0  nós  internos,  ou  seja,  bh(x)  =  0  engloba  o  caso  em  que  x  é  uma  folha.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

14  

Page 15: If969 - Árvores Red-Black

Boas  Árvores  de  Busca:  Prova  do  Lema  13.1  

•  Prova:  –  Primeiro  mostramos  que  a  sub-­‐árvore  com  raiz  em  qualquer  nó  x  contém  pelo  menos  2bh(x)-­‐1  nós  internos.  (Por  indução  em  bh(x))  

–  Caso  Base  (bh(x)  =  0):  2bh(x)-­‐1  =  20-­‐1  =  0  nós  internos,  ou  seja,  bh(x)  =  0  engloba  o  caso  em  que  x  é  uma  folha.  

–  H.I.:  A  sub-­‐árvore  que  tem  como  raiz  o  nó  com  altura-­‐preta  bh(x)-­‐1  possui  2bh(x)−1-­‐1  nós  internos.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

15  

Page 16: If969 - Árvores Red-Black

Boas  Árvores  de  Busca:  Prova  do  Lema  13.1  

•  Prova:  –  Primeiro  mostramos  que  a  sub-­‐árvore  com  raiz  em  qualquer  nó  x  contém  pelo  menos  2bh(x)-­‐1  nós  internos.  (Por  indução  em  bh(x))  

–  Caso  Base  (bh(x)  =  0):  2bh(x)-­‐1  =  20-­‐1  =  0  nós  internos,  ou  seja,  bh(x)  =  0  engloba  o  caso  em  que  x  é  uma  folha.  

–  H.I.:  A  sub-­‐árvore  que  tem  como  raiz  o  nó  com  altura-­‐preta  bh(x)-­‐1  possui  2bh(x)−1-­‐1  nós  internos.  

–  P.I.:  Os  filhos  de  um  nó  x  com  altura-­‐preta  bh(x)  possuem  altura-­‐preta  bh(x)  se  for  vermelho  ou  bh(x)-­‐1  se  for  preto,  logo,  a  sub-­‐árvore  que  tem  x  como  raiz  possui  pelo  menos  (2bh(x)−1-­‐1)  +  (2bh(x)−1-­‐1)  +  1  =  2bh(x)-­‐1  nós  internos.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

16  

Page 17: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  As  operações  de  Inserir  e  Remover  são  mais  complicadas  nas  Árvores  Red-­‐Black  porque  elas  podem  ferir  alguma  propriedade  deste  -po  de  árvore  

•  Neste  caso  u-lizamos  operações  de  rotação  para  corrigir  a  distribuição  dos  nós  e  suas  cores,  reestabelecendo  as  propriedades  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

17  

Page 18: If969 - Árvores Red-Black

Árvore  Red-­‐Black  •  As  operações  de  Inserir  e  Remover  são  mais  complicadas  nas  Árvores  Red-­‐Black  porque  elas  podem  ferir  alguma  propriedade  deste  -po  de  árvore  

•  Neste  caso  u-lizamos  operações  de  rotação  para  corrigir  a  distribuição  dos  nós  e  suas  cores,  reestabelecendo  as  propriedades  

•  Essas  operações  podem  ser  implementadas  de  forma  bastante  parecida  com  as  Árvores  Binárias  de  Busca,  bastando  apenas  modificar  as  cores  dos  nós  para  que  as  propriedades  sejam  sa-sfeitas  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

18  

Page 19: If969 - Árvores Red-Black

Rotação  a  Esquerda  •  Ao  realizarmos  uma  rotação  à  esquerda,  em  torno  do  nó  x,  é  suposto  que  y  é  não  nulo.  

•  A  rotação  à  esquerda  “faz  o  pivô”  na  ligação  entre  x  e  y.  –  Y  vira  a  nova  raiz  da  árvore    –  X  vira  o  filho  esquerdo  de  Y    –  O  filho  esquerdo  de  Y  vira  filho  direito  de  X  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

19  

Page 20: If969 - Árvores Red-Black

Inserção  em  uma  Árvore  Red-­‐Black  •  Para  inserir  um  elemento  em  uma  árvore  red-­‐black:  –  Inicialmente,  um  nodo  Z  é  inserido  como  se  a  árvore  fosse  uma  árvore  de  busca  binária  comum.  

– Colori-­‐se  Z  de  vermelho.  –  Invoca-­‐se  uma  função  RB-­‐INSERT-­‐FIXUP  para  recolorir  e  executar  rotações  na  árvore.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

20  

Page 21: If969 - Árvores Red-Black

RB-­‐INSERT(T,  z)  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

21  

Page 22: If969 - Árvores Red-Black

RB-­‐INSERT-­‐FIXUP(T,  z)  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

22  

Page 23: If969 - Árvores Red-Black

O  Tio  do  elemento  inserido  é  VERMELHO  

•  Um  nó  z  depois  da  inserção  

•  Se  z  e  seu  pai  são  vermelhos,  violamos  a  propriedade  4  

•  Como  o  -o  y  de  z  é  vermelho,  aplicamos  o  caso  1  no  código  e  re-­‐colorimos  os  nós  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

23  

Page 24: If969 - Árvores Red-Black

O  Qo  do  elemento  inserido  é  PRETO  e  o  elemento  inserido  é  um  filho  da  direita  •  De  novo,  z  e  seu  pai  são  vermelhos,  ma  so  -o  de  z  é  preto  

•  Como  z  é  filho  da  direita  de  p[z],  aplicamos  o  caso  2.  

•  Uma  rotação  a  esquerda  é  executada  e  remodelamos  a  árvore  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

24  

Page 25: If969 - Árvores Red-Black

O  Qo  do  elemento  inserido  é  PRETO  e  o  elemento  inserido  é  um  filho  da  esquerda  •  Agora  z  é  o  filho  da  esquerda  de  seu  pai,  e  o  caso  3  pode  ser  aplicado.    

•  Uma  rotação  a  direita  produz  uma  nova  árvore…  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

25  

Page 26: If969 - Árvores Red-Black

Árvore  válida  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

26  

•  Árvore  red-­‐black  válida  

Page 27: If969 - Árvores Red-Black

Como  funciona  o  RB-­‐INSERT-­‐FIXUP  •  Passos:  – Determinar  as  violações  das  regras  da  árvore  red-­‐black  com  a  inserção  e  coloração  do  novo  nó  z  

– Examinar  a  meta  global  do  loop  while,  linhas  1  a  15  

– Examinar  os  três  casos  que  o  loop  while  se  divide    •  Quais  das  propriedades  da  árvore  red-­‐black  podem  ser  violadas?  – As  propriedade  2  e  4!  

•  A  raiz  deve  ser  preta.  •  Um  nó  vermelho  não  pode  ter  filho  vermelho.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

27  

Page 28: If969 - Árvores Red-Black

O  Loop  While  •  No  início,  o  loop  while  tem  três  invariantes:    – O  nó  z  é  vermelho  – Se  P[z]  é  a  raiz,  então  P[z]  é  preto.  – Se  exis-r  alguma  violação  das  propriedades  red-­‐black,  exis-rá  apenas  uma  única  violação:  •  Se  z  é  a  raiz  e  é  vermelha  (propriedade  2)  •  Se  o  pai  de  z  é  vermelho  e  z  é  vermelho  (propriedade  4)  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

28  

Page 29: If969 - Árvores Red-Black

Loop  Invariante  •  Inicialização:  – Começa-­‐se  com  uma  árvore  red-­‐black  sem  violações  e  começamos  com  a  inserção  de  z.  •  Quando  RB-­‐INSERT-­‐FIXUP  é  chamado  z  é  o  nó  vermelho  que  foi  adcionado  •  Se  P[z]  é  a  raiz,  ete  começou  preto  e  não  é  modificado  •  Se  houver  violações,  são  da  propriedade  2  ou  da  propriedade  4  (exclusivamente).  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

29  

Page 30: If969 - Árvores Red-Black

Loop  Invariante  •  Término:    – Quando  o  loop  termina,  P[z]  é  preto  (propriedade  4)  

– A  propriedade  2  é  garan-da  na  linha  16.  •  Manutenção:  – Só  entra-­‐se  no  loop  se  P[z]  for  vermelho,  caso  contrário,  P[z]  é  preto.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

30  

Page 31: If969 - Árvores Red-Black

Inserir  e  Remover  •  Dada  uma  árvore  binária,  é  possível  inserir  e/ou  remover  nós  da  árvore.  – Porém,  as  propriedades  da  árvore  devem  ser  man-das!  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

31  

Page 32: If969 - Árvores Red-Black

Analisando:  Caso  1  •  Z  e  P[z]  são  vermelhos  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

32  

Page 33: If969 - Árvores Red-Black

Análise:  Casos  2  e  3  •  Caso  2:  o  -o  y  de  z  é  preto  e  z  é  filho  da  direita    •  Caso  3:  o  -o  y  de  z  é  preto  e  z  é  filho  da  esquerda  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

33  

Page 34: If969 - Árvores Red-Black

Remoção  em  Árvores  Red-­‐Black  •  Como  em  uma  árvore  binária,  a  remoção  de  um  elemento  de  

uma  árvore  red-­‐black  tem  custo  em  tempo  de  O(lg  n)  •  Para  Remover  um  elemento,  o  processo  é  bem  semelhante  a  

de  uma  árvore  binária:  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

34  

Page 35: If969 - Árvores Red-Black

Removendo  •  Observe  que:    – A  função  RB-­‐DELETE-­‐FIXUP  só  é  invocada  caso  Z  (o  nó  deletado)  seja  preto.  

– Caso  o  nó  deletado  seja  vermelho  as  propriedades  red-­‐black  ficam  inalteradas,  visto  que:  •  Nenhuma  altura  preta  foi  alterada  •  Nenhum  nó  vermelho  ficou  adjacente  •  Se  Z  é  vermelho,  então  Z  não  é  raiz:  Assim  a  Raiz  conQnua  preta.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

35  

Page 36: If969 - Árvores Red-Black

Removendo  um  elemento  •  Se  o  nó  y  deletado  é  preto,  podem  ocorrer  três  problemas:  – Se  y  era  a  raiz  e  um  filho  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  remoção  de  y  faz  com  que  o  caminho  que  con-nha  y  tenha  agora  um  nó  preto  a  menos  (viola  a  propriedade  5)  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

36  

Page 37: If969 - Árvores Red-Black

RB-­‐DELETE-­‐FIXUP(T,  x)  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

37  

Page 38: If969 - Árvores Red-Black

Caso  de  RB-­‐DELETE-­‐FIXUP(T,x)  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

38  

Page 39: If969 - Árvores Red-Black

Caso  de  RB-­‐DELETE-­‐FIXUP(T,x)  •  Caso1:    – O  irmão  w  de  x  é  vermelho  

•  Caso2:  – O  irmão  w  de  x  é  preto  e  ambos  os  filhos  de  w  são  pretos  

•  Caso3:  – O  irmão  w  de  x  é  preto  e  o  filho  da  esquerda  de  w  é  vermelho  e  o  da  direita  é  preto  

•  Caso4  – O  irmão  w  de  x  é  preto  e  o  filho  da  direita  de  w  é  vermelho  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

39  

Page 40: If969 - Árvores Red-Black

Resumindo  •  Árvores  Red-­‐Black:  – Árvores  Binárias  de  Busca  com  bit  adicional  para  representar  a  cor  (PRETA  ou  VERMELHA)  

– Cinco  propriedades  básicas:  •  Todo  nó  é  colorido  PRETO  ou  VERMELHO.    •  A  raiz  é  PRETA.    •  As  folhas  (NULL)  são  PRETAS.    •  Se  um  nó  é  VERMELHO,  seus  filhos  são  PRETOS.    •  Para  cada  nó,  todos  os  caminhos  até  as  folhas  descendentes  contém  o  mesmo  número  de  nós.  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

40  

Page 41: If969 - Árvores Red-Black

Resumindo  •  Árvores  Red-­‐Black:  – Lema:  Uma  Árvore  Red-­‐Black  com  n  nós  internos  tem  altura  o  máximo  2lg(n+1)  

– Possui  todas  as  operações  que  uma  árvore  binária  balanceada  comum  possui  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

41  

Page 42: If969 - Árvores Red-Black

Resumindo  •  Árvores  Red-­‐Black:  –  Inserir:  três  casos  a  considerar  

•  O  -o  é  VERMELHO:  inverte  cores  do  avô,  pai  e  -o  •  O  -o  é  PRETO  e  filho  da  direita:  faz  rotação  para  a  esquerda  •  O  -o  é  PRETO  e  filho  esquerda:  inverte  cores  do  avô  e  do  pai  e  faz  rotação  para  a  direita  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

42  

Page 43: If969 - Árvores Red-Black

Resumindo  •  Árvores  Red-­‐Black:  –  Remover:  quatro  casos  a  considerar  

•  W  é  VERMELHO:  inverte  cores  do  pai  e  de  w.    •  w  é  PRETO  e  ambos  os  filhos  de  w  saão  pretos:  “remove”  um  PRETO  de  x,  faz  w  VERMELHO  e  “adiciona”  PRETO  ao  pai.  Faz  pai  novo  x.    

•  w  é  PRETO,  o  filho  da  esquerda  é́  VERMELHO  e  o  da  direita  PRETO:  inverte  cores  de  w  e  do  seu  filho  da  esquerda  e  faz  uma  rotação  para  a  direita.    

•  w  é  PRETO  e  o  filho  da  direita  é  VERMELHO:  atribui  a  cor  do  pai  a  w,  faz  pai  PRETO,  faz  filho  da  direta  de  w  PRETO  e  faz  uma  rotação  para  a  esquerda.  

–  Complexidade  das  operações:  O(lgn).  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

43  

Page 44: If969 - Árvores Red-Black

AQvidades  Complementares  •  Leitura  do  capítulo  13  do  Livro  do  Cormen  •  Exercício  1  –  Implementar  uma  classe  do  nó  red-­‐black.  Implementar  também  uma  classe  de  uma  árvore  red-­‐black  com  a  função  de  inserção  de  um  elemento.  

•  Exercício  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  

Page 45: If969 - Árvores Red-Black

Referências  na  Web  •  h�p://gauss.ececs.uc.edu/RedBlack/redblack.html  •  h�p://ww3.algorithmdesign.net/handouts/RedBlackTrees.pdf  

•  h�p://www.cs.buap.mx/~-tab/files/RedBlackTrees.pdf  

•  h�p://www.cs.dal.ca/~nzeh/Teaching/Fall%202003/3110/RedBlackTrees.pdf  

•  h�p://en.wikipedia.org/wiki/Red-­‐black_tree  

Algoritmos  e  Estrutura  de  Dados  Árvores  Red-­‐Black  ©  2011  –  Vinicius  Cardoso  Garcia  

45