A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

1 de outubro de 2015 1 Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães.

Apresentações semelhantes


Apresentação em tema: "1 de outubro de 2015 1 Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães."— Transcrição da apresentação:

1 1 de outubro de 2015 1 Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães

2 Árvores binárias onde os elementos são organizados de forma que: 23/janeiro/2001 2 Árvore de Busca Binária katia@cin.ufpe.br Todos os elementos na sub-árvore esquerda de cada nó k têm valor menor ou igual ao valor no nó k. Todos os elementos na sub-árvore direita de cada nó k têm valor maior do que o valor no nó k.

3 Árvore binária onde os elementos são organizados de forma que: 23/janeiro/2001 3 Árvore de Busca Binária katia@cin.ufpe.br y < xz > x x

4 Exemplo: 50, 20, 39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53. 23/janeiro/2001 4 Árvore de Busca Binária katia@cin.ufpe.br 50 20 8 415 39 2642 79 58 5371 88 8596

5 Estrutura de dados dinâmica, com recuperação em tempo logarítmico. 23/janeiro/2001 5 Árvore de Busca Binária katia@cin.ufpe.br 1 2 3 4

6 Ocorre sempre em uma folha. 23/janeiro/2001 6 Inserção em Árvores de Busca katia@cin.ufpe.br Procedimento Inclui (raiz, x): Se raiz então se elemento na raiz > x então Inclui (esquerda, x) senão Inclui (direita, x) senão { aloque espaço para um nó; coloque x neste nó; retorne apontador novo nó}

7 Exemplo: 50, 20, 39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53. 23/janeiro/2001 7 Árvore de Busca Binária katia@cin.ufpe.br 50 20 8 415 39 2642 79 58 5371 88 8596

8 Nem sempre ocorre em uma folha.  23/janeiro/2001 8 Remoção em Árvore de Busca katia@cin.ufpe.br Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso

9 Exemplo: Remove (raiz, 60) 23/janeiro/2001 9 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 79 58 5371 88 8596 raiz

10 Nem sempre ocorre em uma folha.  23/janeiro/2001 10 Remoção em Árvores de Busca katia@cin.ufpe.br Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso senão se EndNó é folha (¬ esq AND ¬ dir ) então apague apontador pai;

11 Exemplo: Remove (raiz, 53) 23/janeiro/2001 11 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 79 58 5371 88 8596 raiz

12 Exemplo: Remove (raiz, 53) 23/janeiro/2001 12 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 79 58 71 88 8596 raiz

13 23/janeiro/2001 13 Remoção em Árvores de Busca katia@cin.ufpe.br Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso senão se EndNó é folha (¬ esq AND ¬ dir ) então apague apontador pai; senão se ¬ esq OR ¬ dir então faça pai de x apontar para filho x

14 Exemplo: Remove (raiz, 58) 23/janeiro/2001 14 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 79 58 71 88 8596 raiz

15 Exemplo: Remove (raiz, 58) 23/janeiro/2001 15 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 79 71 88 8596 raiz

16 23/janeiro/2001 16 Remoção em Árvores de Busca katia@cin.ufpe.br Procedimento Remove (raiz, x) EndNó  Busca ( x ); Se ¬ EndNó então relate insucesso senão se EndNó é folha (¬ esq AND ¬ dir ) então apague apontador pai; senão se ¬ esq OR ¬ dir então faça pai de x apontar para filho x senão substitua x pelo seu sucessor

17 Exemplo: Remove (raiz, 20) 23/janeiro/2001 17 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 79 71 88 8596 raiz Onde está o sucessor de 20?

18 Onde está o sucessor de um elemento cujo nó tem filho à direita? 23/janeiro/2001 18 Remoção em Árvore de Busca katia@cin.ufpe.br 50 20 8 415 39 2642 raiz Um passo à direita. Tantos passos à esquerda quantos sejam necessários. Note que o nó deste elemento não tem filho à esquerda.

19 Exemplo: Remove (raiz, 20) 23/janeiro/2001 19 Remoção em Árvore de Busca katia@cin.ufpe.br 50 26 8 415 39 42 raiz O pai do sucessor apontará para o seu filho à direita do sucessor.

20 Exemplo: 50, 20, 39, 42, 40... 23/janeiro/2001 20 Possível Problema katia@cin.ufpe.br 50 20 39 42 A árvore binária pode degenerar para uma estrutura próxima a uma lista ligada, e o tempo de acesso deixa de ser logarítmico.

21 Procurar manter todas as folhas mais ou menos na mesma altura. 23/janeiro/2001 21 Solução katia@cin.ufpe.br PROPRIEDADE AVL: Para todo nó | altura(dir) - altura(esq) | < 2

22 Exemplo: 50, 20, 10,... 23/janeiro/2001 22 Possível Problema katia@cin.ufpe.br 50 20 Após a inserção do elemento 10, a árvore binária perde a propriedade AVL. SOLUÇÃO: Rotação. 10

23 Inserção à esquerda de árvore desbalanceada à esquerda (bal = -1) 23/janeiro/2001 23 Rotação Simples à Direita katia@cin.ufpe.br Promover o elemento do meio através de um giro no sentido horário. 50 20 10 20 10 50

24 Inserção à direita de árvore desbalanceada à direita (bal = +1) 23/janeiro/2001 24 Rotação Simples à Esquerda katia@cin.ufpe.br Promover o elemento do meio através de um giro no sentido anti-horário. 50 20 10 20 50

25 Inserção à direita de árvore desbalanceada à direita (bal = +1) 23/janeiro/2001 25 Rotação Simples à Esquerda katia@cin.ufpe.br Nó crítico (+1) 60 30 50 90 70 95 90 70 95 30 50 60

26 Inserção à direita de árvore desbalanceada à esquerda (bal = -1) 23/janeiro/2001 26 Rotação Dupla katia@cin.ufpe.br Promover o elemento que desbalanceia tanto à esquerda quanto à direita. 50 20 30 2050

27 Inserção à direita de árvore desbalanceada à direita (bal = +1) 23/janeiro/2001 27 Rotação Dupla katia@cin.ufpe.br Nó crítico (+1) 60 30 50 90 70 65 60 30 50 90 70 65


Carregar ppt "1 de outubro de 2015 1 Árvores de Busca e Árvores AVL Parte 1 Katia Guimarães."

Apresentações semelhantes


Anúncios Google