RUBRO
NEGRA
O que é uma árvore rubro-negra?
É uma Árvore Binária de Busca (ABB) com auto-balanceamento,
III
I
IV
II
Cada nó tem tem uma cor: Preta ou Vermelha
O nó raíz é sempre preto
Não há dois nós vermelhos adjacentes
Todas as folhas são pretas
V Cada caminho raiz -> nó NULL mesma
quantidade de nós pretos
Exemplo
Por que usar?
Operações em uma ABB - busca,
min, máx, insert, delete -> O(h);
na qual h altura da árvore
Árvore desbalanceada -) O(n)
Se inserir e apagar = O(lgn) =>
O(logn) para as outras operações
A altura de um ARN (RBT) é
sempre O(logn)
(n - números de nós)
RUBRO-NEGRA
VS
AVL
As AVLs são mais
balanceadas
Menor quantidade de
rotações ao inserir/
apagar nó.
Muitas operações de
inserir/apagar -> ARN
Como é feita a inserção?
São utilizadas duas ferramentas após a inserção, para rebalancear.
I
II
recolorir
rotacionar
Algoritmo
Dependendo da cor do nó tio, dois casos:
I
II
Se o tio foi vermelho -> recolorir
Se o tio for preto -> rotação e/ou recolorir
Novo nó X
Inserção ABB e o novo nó = vermelho
Se X for raiz, troque a cor para preta (a altura +1)
I
II
I
II
Mude a cor do pai e do tio para PRETO
Avô para VERMELHO
III Caso o pai de X não seja preto ou x não seja raiz:
A Se tio de X= VERMELHO (avô = PRETO, propriedade 5)
Mude x = avô de x, repita passos 2 e 3 para novo xIII
I
II
caso esquerda-esquerda - p é filho da esquerda de a e
x é filho a esquerda de p
caso esquerda-direita - p é filho da esquerda de
g e x é filho da direita de p
III Caso o pai de X não seja preto ou x não seja raiz:
B Se o tio for preto 4 configurações possiveis para x, pai (p) e
avô (a) de X - similar com AVL:
caso direita-direita - caso espelhado iIII
IV caso direita-esquerda - caso espelhado ii
Exemplo
Exemplo
Como é feita a remoção?
Assim como a inserção:
I
II
recolorir
rebalancear
Passos
I
Delete do AVL - no final temos um nó com apenas um
filho ou uma folha, para nós internos - chamadas
recursivas do Delete.
Seja : v - nó a ser deletado;
u - filho que vai tomar o lugar de v
Lembre-se: u é NULL quando v é folha e NULL = PRETO
II Caso Simples:
Quando u ou v é VERMELHO
Fazemos:
u = PRETO
Passos
III Quando u e v PRETOS
A u como PRETO duplo
Tarefa: converter o DUPLO PRETO para PRETO
SIMPLES.
Lembrando: se v folha, então u é NULL (NULL =
PRETO) - então a remoção de uma folha PRETA
causa duplo preto
Passos
B Enquanto o nó atual for DUPLO PRETO ou não é a raiz,
fazendo o nó irmão s.
“Se s é PRETO e pelo menos um dos sobrinhos for VERMELHO,
ROTAÇÃO. O sobrinho VERMELHO será chamado de r. São quatro
casos dependendo da posição de r e s.”
III
I
II
Caso ESQUERDO - ESQUERDO: s é filho a esquerda e r é filho a
esquerda de s ou ambos os filhos de s VERMELHOS.
Caso ESQUERDA - DIREITA: s é filho a esquerda e r é filho a
direita.
Caso DIREITA-DIREITA: s é filho a direita e r é filho a direita
ou ambos os filhos de s são VERMELHOS.
IV Caso ESQUERDA-DIREITA: s é filho a direita e r é filho a
esquerda
Passos
Caso o pai = VERMELHO -> faça o nó PRETO (VERMELHO +
DUPLO PRETO = PRETO SIMPLES )
Converte para o caso de 3 irmãos PRETO, pode ser dividido em
dois subcasos?
“Se o irmão é PRETO ambos os seus filhos PRETOS -> RECOLORIR e
refaça para o PAI se o pai for PRETO.”
“Se o irmão é VERMELHO: ROTACIONE para mover o irmão mais
velho para cima, RECOLORIR o novo PAI e IRMÃO.”
I
II
caso ESQUERDA (s é filho a esquerda) - ROTACIONA a DIREITA
o pai p.
caso DIREITA (s é filho a direita ) - ROTACIONA a ESQUERDA o
pai p.
Cristiano Oliveira
Marcos Levi
Mariana Ogawa
Rafael Parente
Renata Theóphilo

Árvores Rubro Negras

  • 1.
  • 2.
    O que éuma árvore rubro-negra? É uma Árvore Binária de Busca (ABB) com auto-balanceamento, III I IV II Cada nó tem tem uma cor: Preta ou Vermelha O nó raíz é sempre preto Não há dois nós vermelhos adjacentes Todas as folhas são pretas V Cada caminho raiz -> nó NULL mesma quantidade de nós pretos
  • 3.
  • 4.
    Por que usar? Operaçõesem uma ABB - busca, min, máx, insert, delete -> O(h); na qual h altura da árvore Árvore desbalanceada -) O(n) Se inserir e apagar = O(lgn) => O(logn) para as outras operações A altura de um ARN (RBT) é sempre O(logn) (n - números de nós)
  • 5.
    RUBRO-NEGRA VS AVL As AVLs sãomais balanceadas Menor quantidade de rotações ao inserir/ apagar nó. Muitas operações de inserir/apagar -> ARN
  • 6.
    Como é feitaa inserção? São utilizadas duas ferramentas após a inserção, para rebalancear. I II recolorir rotacionar
  • 7.
    Algoritmo Dependendo da cordo nó tio, dois casos: I II Se o tio foi vermelho -> recolorir Se o tio for preto -> rotação e/ou recolorir Novo nó X Inserção ABB e o novo nó = vermelho Se X for raiz, troque a cor para preta (a altura +1) I II
  • 8.
    I II Mude a cordo pai e do tio para PRETO Avô para VERMELHO III Caso o pai de X não seja preto ou x não seja raiz: A Se tio de X= VERMELHO (avô = PRETO, propriedade 5) Mude x = avô de x, repita passos 2 e 3 para novo xIII
  • 9.
    I II caso esquerda-esquerda -p é filho da esquerda de a e x é filho a esquerda de p caso esquerda-direita - p é filho da esquerda de g e x é filho da direita de p III Caso o pai de X não seja preto ou x não seja raiz: B Se o tio for preto 4 configurações possiveis para x, pai (p) e avô (a) de X - similar com AVL: caso direita-direita - caso espelhado iIII IV caso direita-esquerda - caso espelhado ii
  • 10.
  • 11.
  • 12.
    Como é feitaa remoção? Assim como a inserção: I II recolorir rebalancear
  • 13.
    Passos I Delete do AVL- no final temos um nó com apenas um filho ou uma folha, para nós internos - chamadas recursivas do Delete. Seja : v - nó a ser deletado; u - filho que vai tomar o lugar de v Lembre-se: u é NULL quando v é folha e NULL = PRETO II Caso Simples: Quando u ou v é VERMELHO Fazemos: u = PRETO
  • 14.
    Passos III Quando ue v PRETOS A u como PRETO duplo Tarefa: converter o DUPLO PRETO para PRETO SIMPLES. Lembrando: se v folha, então u é NULL (NULL = PRETO) - então a remoção de uma folha PRETA causa duplo preto
  • 15.
    Passos B Enquanto onó atual for DUPLO PRETO ou não é a raiz, fazendo o nó irmão s. “Se s é PRETO e pelo menos um dos sobrinhos for VERMELHO, ROTAÇÃO. O sobrinho VERMELHO será chamado de r. São quatro casos dependendo da posição de r e s.” III I II Caso ESQUERDO - ESQUERDO: s é filho a esquerda e r é filho a esquerda de s ou ambos os filhos de s VERMELHOS. Caso ESQUERDA - DIREITA: s é filho a esquerda e r é filho a direita. Caso DIREITA-DIREITA: s é filho a direita e r é filho a direita ou ambos os filhos de s são VERMELHOS. IV Caso ESQUERDA-DIREITA: s é filho a direita e r é filho a esquerda
  • 16.
    Passos Caso o pai= VERMELHO -> faça o nó PRETO (VERMELHO + DUPLO PRETO = PRETO SIMPLES ) Converte para o caso de 3 irmãos PRETO, pode ser dividido em dois subcasos? “Se o irmão é PRETO ambos os seus filhos PRETOS -> RECOLORIR e refaça para o PAI se o pai for PRETO.” “Se o irmão é VERMELHO: ROTACIONE para mover o irmão mais velho para cima, RECOLORIR o novo PAI e IRMÃO.” I II caso ESQUERDA (s é filho a esquerda) - ROTACIONA a DIREITA o pai p. caso DIREITA (s é filho a direita ) - ROTACIONA a ESQUERDA o pai p.
  • 17.
    Cristiano Oliveira Marcos Levi MarianaOgawa Rafael Parente Renata Theóphilo