1
INF 1010Estruturas de Dados Avançadas
Árvores 2-3
17/10/2011 © 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 2
Características
• Árvores 2-3• Cada nó armazena 1 ou 2 chaves
• Cada nó interno possui 2 ou 3 filhos
• São balanceadas
• Não dependem de operações de rotação
• Balanceamento é garantido diretamente pelas operações de inserção e remoção
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 3
Características
• Árvores 2-3 (cont.)• São árvores de busca
• Nó interno com 2 filhos
• Nó interno com 3 filhos
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 4
Caminhamento
• Caminhamento em Ordem Infixa (esboço)1. Caminhe pela subárvore da esquerda.
2. Imprima a menor chave (que pode ser a única).
3. Caminhe pela subárvore do meio.
4. Imprima a maior chave, se existir.
5. Caminhe pela subárvore da direita, se existir.
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 5
Busca
• Exemplo: Busca por “130”
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 6
Inserção
• Algoritmo de Inserção (esboço)1. Localize a folha onde a nova chave será
inserida.
2. Divida a folha, se necessário.
3. Divida nós internos, recursivamente, se necessário.
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 7
Inserção
• Algoritmo de Inserção (cont.)• Se a folha já tem 2 chaves, divida a folha
• Mova a “chave do meio” para o pai
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 8
Inserção
• Algoritmo de Inserção (cont.)• Se o pai já tem 2 chaves, divida o pai
• Mova a “chave do meio” para o pai do pai
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 9
Inserção
• Algoritmo de Inserção (cont.)• Se a raiz já tem 2 chaves, crie nova raiz
• Mova a “chave do meio” para a nova raiz
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 10
Inserção
• Inserção de “39”• Localize a folha onde “39” deve ser inserida
• A folha só tem 1 chave: insira “39”
17/10/2011
39
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 11
Inserção
• Inserção de “38”• Localize a folha onde “38” deve ser inserida
• A folha tem 2 chaves: simule a inserção de “38”
17/10/2011
38
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 12
Inserção
• Inserção de “38”• Mova a chave do meio para o pai p
• Separe o menor e o maior valores em 2 nós,que serão filhos de p
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 13
Inserção
• Inserção de “37”• Localize a folha onde “37” deve ser inserida
• A folha só tem 1 chave: insira “37”
17/10/2011
37
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 14
Inserção
• Inserção de “36”• Localize a folha onde “36” deve ser inserida
• A folha já tem 2 chave: Simule a inserção de “36”
17/10/2011
36
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 15
Inserção
• Inserção de “36”• Simule mover a chave do meio para o pai p
• Simule criar 2 novos filhos de p
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 16
Inserção
• Inserção de “36”• Divida o nó p
• Mova a chave do meio para o pai de p
• Os nós com as chaves menor e maior formam novos nós
• Redistribua os 4 filhos de p entre os novos nós
17/10/2011
Exercício
• Ilustre como fica a árvore 2-3, inicialmente vazia, com a seguinte sequência de inserções: 1, 2, 3, 4, 5, 6 e 7.
17/10/2011 © 2011 DI, PUC-Rio • Estruturas de Dados Avançadas • 2011.2 17
Exercício
• Algoritmo de buscastruct node {
int x, y;
Node *l, *m, *r;
};
• y = -1, significa ausência de valor.
17/10/2011 © 2011 DI, PUC-Rio • Estruturas de Dados Avançadas • 2011.2 18
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 19
Remoção
• Algoritmo de Remoção (esboço)1. Se a chave a ser removida pertencer a uma
folha,
• Remova a chave.
2. Se a chave a ser removida pertencer a um nó interno
• Troque a chave com a sua sucessora (que necessariamente está em uma folha).
• Remova a chave (da folha).
3. Redistribua e combine nós.
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 20
Remoção
• Algoritmo de Remoção (cont)• Remova e Redistribua – Casos 1 e 2
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 21
Remoção
• Algoritmo de Remoção (cont)• Remova e Redistribua – Casos 3 e 4
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 22
Remoção
• Algoritmo de Remoção (cont)• Remova e Combine – Casos 5 e 6
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 23
Remoção
• Algoritmo de Remoção (cont)• Remova e Combine – Caso 7
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 24
Remoção
• Algoritmo de Remoção (cont)• Remova e Redistribua – Caso 8
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 25
Remoção
• Algoritmo de Remoção (cont)• Remova e Redistribua – Caso 9
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 26
Remoção
• Algoritmo de Remoção (cont)• Remova e Combine – Caso 10
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 27
Remoção
• Algoritmo de Remoção (cont)• Remova e Combine – Caso 11
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 28
Remoção
• Algoritmo de Remoção (cont)• Remova a raiz – Caso 12
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 29
Remoção
• Remoção de “65”• O nó que contém “65” é interior
• Troque “65” com a sua sucessora
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 30
Remoção
• Remoção de “65”• Remova “65”
• Como a folha possui 2 chaves, é possível remover “65”
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 31
Remoção
• Remoção de “70”• O nó que contém “70” é interior
• Troque “70” com a sua sucessora
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 32
Remoção
• Remoção de “70”• Remova “70”
17/10/2011
© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 33
Remoção
• Remoção de “70”• A árvore torna-se inválida
• Combine nós
17/10/2011
Resumo
• Árvores 2-3• Cada nó armazena 1 ou 2 chaves
• Cada nó interno possui 2 ou 3 filhos
• Algoritmos de inserção e remoção mantém as árvores balanceadas
• Caso especial de Árvores-B
17/10/2011 © 2011 DI, PUC-Rio • Estruturas de Dados Avançadas • 2011.2 34
Top Related