1 / 21

Árvores AVL Balanceadas (Árvore Binária Balanceada)

Árvores AVL Balanceadas (Árvore Binária Balanceada). José Antonio de Oliveira Neto mano_oliveira@terra.com.br. SUMÁRIO O que são árvores? Árvores Balanceadas Balanceamento estático e dinâmico! Árvores AVL Fator de Balanceamento (Fatbal) Rotação Simples(Esquerda e direita)

odessa
Download Presentation

Árvores AVL Balanceadas (Árvore Binária Balanceada)

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 AVL Balanceadas(Árvore Binária Balanceada) José Antonio de Oliveira Neto mano_oliveira@terra.com.br

  2. SUMÁRIO • O que são árvores? • Árvores Balanceadas • Balanceamento estático e dinâmico! • Árvores AVL • Fator de Balanceamento (Fatbal) • Rotação Simples(Esquerda e direita) • Rotação Dupla (Esquerda e Direita) • Exemplos • Referências.

  3. O que são Árvores? • São estruturas de dados não lineares que caracterizam uma relação entre dados; • A relação existente entre os dados é uma relação de hierarquia onde um conjunto de nodos é hierarquicamente subordinado a outro.

  4. Balanceadas Árvores • Uma arvore é considerada balanceada quando suas sub-arvores à esquerda e à direita possuem a mesma altura. • A árvore não balanceada é definida como degenerada Árvore Binária Balanceada Árvore Binária Degenerada

  5. Balanceadas Árvores • Balanceamento Estático: - Este balanceamento consiste em, depois de um certo tempo de uso da árvore, destruir sua estrutura, guardando suas informações em uma lista ordenada e reconstruí-la de forma balanceada. • Balanceamento Dinâmico: - Tem por objetivo reajustar os nós de uma árvore sempre que uma inserção ou remoção provocar desbalanceamento. - Um exemplo de Balanceamento dinâmico são as árvores AVL.

  6. Árvores AVL • O termo AVL vem de seus fundadores Adel´son, Vel´skii e Landis (1962). Foi a primeira estrutura de dados a oferecer operações de inserção, remoção e busca em tempo logaritmo ou seja é um algoritmo muito rápido. - Em uma árvore degenerada de 10.000 nós, são necessárias 5.000 comparações para efetuar uma busca, já numa árvore AVL, com o mesmo número de nós, essa média baixa para 14 comparações. – • A árvore AVL é uma árvore binária de busca e sua estrutura foi construída de forma que a altura da sub-árvore direita é diferente da altura da sub-árvore esquerda de no máximo 1.

  7. Árvores AVLFator de Balanceamento • Sendo assim, para cada nó define-se um fator de balanceamento(fatbal), que deve ser -1,0 ou 1. Fatbal = altura (sub-arvore direita) – altura (sub-árvore esquerda) -> Fatbal = -1, quando a sub-árvore da esquerda é um nível mais alto que a direita. -> Fatbal = 0, quando as duas sub-árvores tem a mesma altura. -> Fatbal = 1, quando a sub-árvore da direita é um nível mais alto que a esquerda.

  8. Balanceamento em AVL • Inserimos um novo nodo na árvore. • Esta inserção pode ou não alterar as propriedades de balanceamento. • Caso a inserção desse novo nodo não viole alguma propriedade de balanceamento, podemos continuar inserindo novos nodos. • Se a inserção afetar as propriedades de balanceamento devemos restaurar o balanço da árvore. Esta restauração é efetuada através de ROTAÇÕES na árvore.

  9. Rotação: I) Rotação simples à esquerda

  10. Rotação: II) Rotação simples à direita

  11. Rotação: III) Rotação dupla à esquerda (rotação simples à direita + rotação simples à esquerda)

  12. Rotação: IV) Rotação dupla à direita (rotação simples à esquerda + rotação simples à direita)

  13. Rotação: Dicas: a) Para identificar quando uma rotação é simples ou dupla deve-se observar os sinais do Fb: • Sinal for igual, a rotação é simples • Sinal for diferente a rotação é dupla b) Se Fb for positivo (+) a rotação para à esquerda c) Se Fb for negativa (-) a rotação para à direita

  14. Caso I: Rotação Simples • Suponha que inserimos os números 50, 40 e 30 em uma árvore. Obteremos então: • A inserção novamente produziu um desbalanceamento. • Neste caso, como os sinais dos FB são os mesmos, significa que precisamos fazer apenas uma ROTAÇÃO SIMPLES à direita no nodo com FB -2. • No caso simétrico (nodo com FB 2) faríamos uma rotação simples à esquerda.

  15. Caso I: Rotação Simples • Após a rotação simples teremos: • A árvore está balanceada dentro das propriedades de AVL.

  16. Exemplo: • Considerando a árvore abaixo: • A árvore está balanceada, como podemos observar pelos Fb de cada nodo. • São dois os possíveis casos de desbalancemento

  17. Caso II: Rotação Dupla • Ao inserir o número 5 na árvore teremos a seguinte árvore: • O nodo 8 fica com o FB -2 e tem um filho com FB +1. Neste caso para manter o balanceamento devemos aplicar duas rotações, também denominada ROTAÇÃO DUPLA. • Primeiro rotaciona-se o nodo com FB 1 para a esquerda.

  18. Caso II: Rotação Dupla • Logo rotaciona-se o nodo que possuía FB -2 na direção oposta, nesse caso a direita.

  19. Caso II: Rotação Dupla • Os FB dos nodos voltaram a ficar dentro do esperado das árvores AVL.• O caso simétrico ao explicado acima acontece com os sinais de FB trocados, ou seja, um nodo com FB +2 com um filho com FB -1. Também utilizariamos uma rotação dupla, mas nos sentidos contrários, ou seja, o nodo com FB -1 seria rotacionado para a direita e o nodo com FB +2 seria rotacionado para a esquerda.

  20. A descrição do algoritmo em pseudo-código para a construção de uma árvore AVL seria: • Inserir o novo nodo normalmente • Iniciando com o nodo pai do nodo recém-inserido, testar se a propriedade AVL é violada no novo nodo. Temos aqui 2 possibilidades: • A condição AVL foi violada • Execute as operações de rotação conforme for o caso (Caso I ou Caso II). • Volte ao passo de Inserção. • A condição AVL não foi violada. • Se o nodo recém-testado não tem pai, ou seja, é o nodo raiz da árvore, volte para inserir novo nodo.

  21. Referências: • Luzzardi, Paulo Roberto Gomes -Estrutura da Dados. UCPel • Sites: * http://www.ucb.br/prg/professores/giovanni/disciplinas/2005- 1/eda/material/avl.html * http://www.ufgd.edu.br/~wlsantos/Algo/Arvores_Topicos.pdf * http://www.ufgd.edu.br/~wlsantos/Algo/Arvores.pdf *http://virtual.lncc.br/~rodrigo/cursos/unused/EDII/01_Apostilas/outros/AVL_IME.pdf Simulação: *http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html

More Related