1 / 27

Árvores de Busca

Árvores de Busca. Katia Guimarães. Dissemos anteriormente que a capacidade de alocação dinâmica é muito desejável em muitos casos. Mas vimos que as estruturas lineares, como listas ligadas, têm um problema por exigir acesso seqüencial. Usando Estruturas Dinâmicas.

Download Presentation

Árvores de Busca

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Árvores de Busca Katia Guimarães

  2. Dissemos anteriormente que a capacidade de alocação dinâmica é muito desejável em muitos casos. Mas vimos que as estruturas lineares, como listas ligadas, têm um problema por exigir acesso seqüencial. Usando Estruturas Dinâmicas

  3. Uma solução para este problema pode ser através do uso de estruturas não lineares. Ex: Dividir a lista em duas. Estruturas não Lineares Maiores que X X Menores que X

  4. O problema de dividir a lista em duas é que isto apenas “divide o problema em dois”. Estruturas não Lineares Maiores que X X Menores que X

  5. Estruturas não Lineares Uma solução mais robusta consiste em dividir a lista a cada elemento. X< Y<Z X< Y X<Z< Y X Y<Z<X Y< X Z< Y<X

  6. Árvores: Estruturas dinâmicas com: Raiz ancestral pai filho à esq. filho à dir. descendente Folhas: nós sem filhos

  7. Árvores binárias onde os elementos são organizados de forma que: Árvore de Busca Binária • 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.

  8. Árvore binária onde os elementos são organizados de forma que: Árvore de Busca Binária x y < x z > x

  9. Exemplo: 50, 20, 39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53. Árvore de Busca Binária 50 20 79 8 39 88 58 4 15 26 42 53 71 85 96

  10. Estrutura de dados dinâmica, com recuperação em tempo logarítmico. Árvore de Busca Binária 1 2 3 4

  11. Ocorre sempre em uma folha. Inserção em Árvores de Busca 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ó}

  12. Exemplo: 50, 20, 39, 8, 79, 26, 58, 15, 88, 4, 85, 96, 71, 42, 53. Árvore de Busca Binária 50 20 79 8 39 88 58 4 15 26 42 53 71 85 96

  13. Nem sempre ocorre em uma folha. Remoção em Árvore de Busca Procedimento Remove (raiz, x) EndNó Busca (x); Se ¬EndNó entãorelate insucesso

  14. Exemplo: Remove (raiz, 60) Remoção em Árvore de Busca 50 20 79 8 39 88 58 4 15 26 42 53 71 85 96 raiz

  15. Nem sempre ocorre em uma folha. Remoção em Árvores de Busca Procedimento Remove (raiz, x) EndNó Busca (x); Se ¬EndNó entãorelate insucesso senão se EndNó é folha (¬esqAND ¬dir ) então apague apontador pai;

  16. Exemplo: Remove (raiz, 53) Remoção em Árvore de Busca 50 20 79 8 39 88 58 4 15 26 42 53 71 85 96 raiz

  17. Exemplo: Remove (raiz, 53) Remoção em Árvore de Busca 50 20 79 8 39 88 58 4 15 26 42 71 85 96 raiz

  18. Remoção em Árvores de Busca Procedimento Remove (raiz, x) EndNó Busca (x); Se ¬EndNó entãorelate insucesso senão se EndNó é folha (¬esqAND ¬dir ) então apague apontador pai; senão se ¬esqXOR ¬dir então faça pai de x apontar para filho x

  19. Exemplo: Remove (raiz, 58) Remoção em Árvore de Busca 50 20 79 8 39 88 58 4 15 26 42 71 85 96 raiz

  20. Exemplo: Remove (raiz, 58) Remoção em Árvore de Busca 50 20 79 8 39 88 4 15 26 42 85 96 raiz 71

  21. Remoção em Árvores de Busca Procedimento Remove (raiz, x) EndNó Busca (x); Se ¬EndNó entãorelate insucesso senão se EndNó é folha (¬esqAND ¬dir ) então apague apontador pai; senão se ¬esqOR ¬dir então faça pai de x apontar para filho x senão substitua x pelo seu sucessor

  22. Exemplo: Remove (raiz, 20) Remoção em Árvore de Busca 50 20 79 8 39 88 4 15 26 42 85 96 raiz Onde está o sucessor de 20? 71

  23. Onde está o sucessor de um elemento cujo nó tem filho à direita? Remoção em Árvore de Busca 50 20 8 39 4 15 26 42 raiz Um passo à direita. Tantos passos à esquerda quantos sejam necessários. Note que o nó deste elemento não tem filho à esquerda.

  24. Exemplo: Remove (raiz, 20) Remoção em Árvore de Busca 50 26 8 39 4 15 42 raiz O pai do sucessor apontará para o filho à direita do nó do sucessor.

  25. Exemplo: 50, 20, 27, 42, 40 ... Possível Problema 50 20 27 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. 40

  26. Procurar manter todas as folhas mais ou menos na mesma altura. Solução PROPRIEDADE AVL: Para todo nó | altura(dir) - altura(esq) | < 2

  27. Exemplo: 50, 20, 10, ... Possível Problema 50 20 10 Após a inserção do elemento 10, a árvore binária perde a propriedade AVL. SOLUÇÃO: (Próxima aula)

More Related