1 / 33

INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.1

INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.1. Árvores Binárias e Árvores AVL. Árvore de Busca Binária. Uma árvore binária é uma árvore de busca binária quando: todo elemento armazenado na subárvore esquerda é menor que a raiz r ;

meghan
Download Presentation

INE 5384 Estruturas de Dados Prof a . Patrícia Vilain 2003.1

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. INE 5384 Estruturas de Dados Profa. Patrícia Vilain 2003.1

  2. Árvores Binárias e Árvores AVL

  3. Árvore de Busca Binária Uma árvore binária é uma árvore de busca binária quando: • todo elemento armazenado na subárvore esquerda é menor que a raiz r; • nenhum elemento armazenado na subárvore direita é menor que a raiz r; • as subárvores esquerda e direita também são árvores de busca binária.

  4. C G H F B A E D Árvore de Busca Binária

  5. Árvore de Busca Binária 30 9 40 3 36 45 33 39

  6. 15 88 63 94 6 57 71 Pesquisa em uma Árvore de Busca Binária • Complexidade da pesquisa de um objeto  O(h(A)) h(A) = log2 n O(h(A)) = O(log2 n) 42 > 42 < 42 h(A)

  7. 15 88 63 94 6 57 71 Inclusão em uma Árvore de Busca Binária • Navegação na subárvore ESQ ou DIR até encontrar a posição correta para inclusão • Complexidade da inclusão de um objeto  O (log2 n) incluir chave 67 42

  8. 15 88 63 94 6 57 71 Inclusão em uma Árvore de Busca Binária • Navegação na subárvore ESQ ou DIR até encontrar a posição correta 42 > 42 incluir chave 67 < 88 > 63 < 71 67

  9. 15 88 63 94 6 57 71 Exclusão em uma Árvore de Busca Binária • Problema: manter a Árvore de Busca Binária correta após a exclusão de um nodo • Dois casos podem ocorrer: • caso 1: o nodo a ser retirado é folha excluir chave 57 • caso 2: o nodo a ser retirado não é folha excluir chave 42 42

  10. Problema da Árvore de Busca Binária • O desbalanceamento progressivo de uma Árvore de Busca Binária tende a tornar linear a complexidade de pesquisa: O(log2 n) O(n) • Exemplo: • ordem de inclusão: 1,13, 24, 27, 56 • complexidade da pesquisa: O(n) Alternativa de solução:Árvore AVL

  11. Árvore AVL • Uma árvore AVL A é uma Árvore de Busca Binária tal que:  subárvore A’  A (h(A’.esq) – h(A’.dir)  [-1,1]) • Uma árvore AVL é uma Árvore de Busca Binária Balanceada • AVL (Adelson-Velskii e Landis)

  12. 63 63 63 94 27 94 27 27 6 6 71 71 20 20 Exemplos 0 0 42 42 -2 +2 -1 +1 15 88 15 88 +1 +1 0 0 0 0 0 0 42 0 0 0 0 0 0 57 57 0 0 15 88 Não é árvore AVL! Árvore AVL 0 0 0 0 Árvore AVL

  13. Operação de Rotação • Como manter uma árvore AVL sempre balanceada após uma inclusão ou exclusão? • através de uma operação de Rotação • Características da operação: • preserva a ordem das chaves • basta uma execução da operação de rotação para tornar a árvore novamente AVL

  14. Operação de Rotação Tipos de rotação: Rotação simples: • para a direita • para a esquerda Rotação dupla: • para a direita • para a esquerda

  15. Rotação Simples Executada toda vez que uma árvore fica desbalanceada com um fatorB: • positivo e sua subárvore ESQ também tem um fatorBpositivo (Rotação Simples para a Direita) ou • negativo e sua subárvore DIR também tem um fatorBnegativo (Rotação Simples para a Esquerda) Complexidade: O(1)

  16. 27 27 6 6 Exemplo - Rotação Simples para a Direita uma rotação simples para a direita é necessária +1 +2 42 42 incluir chave 4 0 0 +1 0 15 88 15 88 0 +1 0 0 0 4

  17. Rotação Simples para a Direita +2 0 Y X Rotação para a Direita 0 +1 Y X AXEsq AYDir AYDir AXDir AXEsq AXDir

  18. 27 27 88 6 4 Exemplo - Rotação Simples para a Direita +2 42 0 Rotação para a Esquerda 15 +1 0 15 +1 88 0 6 42 +1 0 0 0 0 0 4

  19. 94 94 Exemplo - Rotação Simples para a Esquerda uma rotação simples para a esquerda é necessária -2 -1 42 42 incluir chave 90 0 0 0 -1 15 88 15 88 0 0 0 +1 67 67 0 90

  20. Rotação Simples para a Esquerda -2 0 Y X Rotação para a Esquerda -1 0 X Y AYEsq AXDir AXDir AXEsq AYEsq AXEsq

  21. 67 90 94 Exemplo - Rotação Simples para a Esquerda -2 0 42 88 Rotação para a Esquerda 0 0 -1 +1 15 42 88 94 0 0 0 +1 0 67 15 0 90

  22. Rotação Dupla Executada toda vez que uma árvore fica desbalanceada com um fatorB: • positivo e sua subárvore ESQ tem um fatorBnegativo (Rotação Dupla para a Direita) ou • negativo e sua subárvore DIR tem um fatorBpositivo (Rotação Dupla para a Esquerda) Complexidade: O(1)

  23. 27 6 6 Exemplo - Rotação Dupla para a Direita uma rotação dupla para a direita é necessária +1 +2 42 42 incluir chave 34 0 -1 0 0 15 15 88 88 0 0 0 -1 27 0 34

  24. X Z Rotação Dupla para a Direita +2 +2 Rotação Dupla para a Direita Y Y 1o. Esq.Rotação para aEsquerda -1 +1 X -1 +1 Z AYDir AYDir AZDir AZEsq AXEsq AZEsq AZDir AXEsq

  25. X X Y Z Z Rotação Dupla para a Direita Rotação Dupla para a Direita 0 +2 2o. Rotação para a Direita Y 0 +1 +1 +1 AZDir AZEsq AYDir AZDir AXEsq AYDir AZEsq AXEsq

  26. 6 6 Exemplo - Rotação Dupla para a Direita Rotação Dupla para a Direita +2 +2 42 42 1o. Esq.Rotação para a Esquerda -1 +1 0 0 15 27 88 88 0 +1 0 -1 15 27 34 0 0 34

  27. 6 6 Exemplo - Rotação Dupla para a Direita Rotação Dupla para a Direita +2 42 2o. Rotação para a Direita 0 27 +1 0 27 88 +1 0 +1 42 0 15 15 34 0 0 0 0 88 34

  28. 94 94 Exemplo - Rotação Dupla para a Esquerda uma rotação dupla para a esquerda é necessária -2 -1 42 42 incluir chave 51 0 +1 0 0 15 88 15 88 +1 0 0 0 67 67 0 51

  29. Rotação Dupla para a Esquerda -2 -2 Rotação Dupla para a Esquerda Y Y 1o. Dir.Rotação para a Direita +1 -1 X Z -1 +1 Z X AYEsq AYEsq AZEsq AXDir AZDir AZEsq AZDir AXDir

  30. Y X Z Rotação Dupla para a Esquerda Rotação Dupla para a Esquerda -2 0 2o. Rotação para a Esquerda Y -1 -1 0 Z -1 X AZDir AYEsq AZEsq AZEsq AXDir AYEsq AZDir AXDir

  31. 94 Exemplo - Rotação Dupla para a Esquerda Rotação Dupla para a Esquerda 1o. Dir.Rotação para a Direita -2 -2 42 42 0 0 -1 +1 15 15 67 88 0 +1 -1 0 51 67 88 0 0 51 94

  32. Exemplo - Rotação Dupla para a Esquerda Rotação Dupla para a Esquerda 2o. Rotação para a Esquerda 0 -2 67 42 0 -1 0 -1 42 88 15 67 0 0 0 0 -1 15 94 51 51 88 0 94

  33. Balanceamento Quando realizar o balanceamento de uma arvore AVL? • Sempre que a árvore apresentar um fatorB fora do intervalo [-1,1]. • O valor do fatorB deve ser testado sempre após uma operação de inclusão ou exclusão de nodo na árvore.

More Related