• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Árvores binárias balanceadas
 

Árvores binárias balanceadas

on

  • 5,636 views

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

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

Statistics

Views

Total Views
5,636
Views on SlideShare
5,635
Embed Views
1

Actions

Likes
3
Downloads
107
Comments
0

1 Embed 1

https://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Árvores binárias balanceadas Árvores binárias balanceadas Presentation Transcript

    • Também conhecidas como Árvores AVL
    •  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.
    •  if ((Hd – He) < 2) { É AVL }
    •  if ((Hd – He) >= 2) { NÃO É AVL }
    •  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.
    •  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.
    •  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
    •  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.
    •  Rotação simples à esquerda
    •  Rotação simples à direita
    •  Rotação dupla à esquerda (rotação simples à direita + rotação simples à esquerda)
    •  Rotação dupla à direita (rotação simples à esquerda + rotação simples à direita)
    •  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
    •  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.
    •  Após a rotação simples teremos: Agora a árvore está balanceada.
    •  Como podemos observar, a árvore está balanceada pelos FB de cada nó. São dois os possíveis casos de desbalanceamento.
    •  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.
    •  Logo rotaciona-se o nó que possuía FB -2 na direção oposta, nesse caso a direita.
    •  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.