Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Árvores binárias balanceadas

http://www.youtube.com/watch?v=xNyQ6F_1SbE

  • Inicia sesión para ver los comentarios

Árvores binárias balanceadas

  1. 1. Também conhecidas como Árvores AVL
  2. 2.  Uma árvore é considerada AVL se, e somente se, para cada um de seus nós, as alturas das sub-árvores à direita e à esquerda forem iguais, ou difiram em apenas uma unidade.
  3. 3.  if ((Hd – He) < 2) { É AVL }
  4. 4.  if ((Hd – He) >= 2) { NÃO É AVL }
  5. 5.  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 desbalanceada 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. Devemos sempre tentar manter o custo de acesso o menor possível, e o algoritmo da árvore avl busca exatamente isso, deixando a árvore sempre com a menor altura possível.
  6. 6.  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 desbalanceada 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. Devemos sempre tentar manter o custo de acesso o menor possível, e o algoritmo da árvore AVL busca exatamente isso, deixando a árvore sempre com a menor altura possível.
  7. 7.  Para cada nó, defini-se um fator de balanceamento (FatBal), que deve ser -1, 0 ou 1. Ele é o responsável por avisar que a árvore está desbalanceada. FatBal = altura (sub-árvore 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.  Toda folha tem FB = 0
  8. 8.  Quando inserimos um novo registro na árvore, ou removemos um registro já existente. Esta inserção/remoção pode ou não alterar as propriedades de balanceamento. Caso a inserção/remoção desse novo registro não viole nenhuma propriedade de balanceamento, podemos continuar inserindo/removendo registros. Se a inserção/remoçã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. 9.  Rotação simples à esquerda
  10. 10.  Rotação simples à direita
  11. 11.  Rotação dupla à esquerda (rotação simples à direita + rotação simples à esquerda)
  12. 12.  Rotação dupla à direita (rotação simples à esquerda + rotação simples à direita)
  13. 13.  Dicas a) Para identificar quando uma rotação é simples ou dupla deve-se observar os sinais do FB: - Se o sinal for igual, a rotação é simples - Se o sinal for diferente, a rotação é dupla b) Se FB for positivo (+), a rotação é para à esquerda c) Se FB for negativo (-), a rotação é para à direita
  14. 14.  Suponha que inserimos os números 50, 40 e 30 em uma árvore. Obteremos então:  A inserção 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 nó com FB -2. No caso simétrico (nó com FB 2) faríamos uma rotação simples à esquerda.
  15. 15.  Após a rotação simples teremos: Agora a árvore está balanceada.
  16. 16.  Como podemos observar, a árvore está balanceada pelos FB de cada nó. São dois os possíveis casos de desbalanceamento.
  17. 17.  Ao inserir o número 5 na árvore, teremos a seguinte árvore:  O nó 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 nó com FB 1 para a esquerda.
  18. 18.  Logo rotaciona-se o nó que possuía FB -2 na direção oposta, nesse caso a direita.
  19. 19.  Os FB dos nós 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 nó com FB +2 com um filho com FB -1. Também utilizaríamos uma rotação dupla, mas nos sentidos contrários, ou seja, o nó com FB -1 seria rotacionado para a direita e o nó com FB +2 seria rotacionado para a esquerda.

×