INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de...

34
INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/2011 1 © 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1

Transcript of INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de...

Page 1: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

1

INF 1010Estruturas de Dados Avançadas

Árvores 2-3

17/10/2011 © 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1

Page 2: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 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

Page 3: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 4: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 5: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 5

Busca

• Exemplo: Busca por “130”

17/10/2011

Page 6: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 7: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 8: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 9: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 10: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 11: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 12: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 13: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 14: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 15: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 16: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 17: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

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

Page 18: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

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

Page 19: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 20: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 21: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 22: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 23: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 24: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 25: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 26: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 27: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 28: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 29: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 30: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 31: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 32: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 2012 DI, PUC-Rio • Estruturas de Dados Avançadas • 2012.1 32

Remoção

• Remoção de “70”• Remova “70”

17/10/2011

Page 33: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

© 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

Page 34: INF 1010 Estruturas de Dados Avançadas Árvores 2-3 17/10/20111© 2012 DI, PUC-Rio Estruturas de Dados Avançadas 2012.1.

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