SlideShare a Scribd company logo
1 of 19
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.

More Related Content

What's hot

Servidores Web
Servidores Web Servidores Web
Servidores Web bastosluis
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Fundamentos de banco de dados 04 componentes sgbd
Fundamentos de banco de dados   04 componentes sgbdFundamentos de banco de dados   04 componentes sgbd
Fundamentos de banco de dados 04 componentes sgbdRafael Pinheiro
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Diagramas de Fluxo de Dados
Diagramas de Fluxo de DadosDiagramas de Fluxo de Dados
Diagramas de Fluxo de DadosJanynne Gomes
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosrobsons75
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Gerenciamento de Serviços de TI.pdf
Gerenciamento de Serviços de TI.pdfGerenciamento de Serviços de TI.pdf
Gerenciamento de Serviços de TI.pdfOs Fantasmas !
 
Introdução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticasIntrodução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticasSusana Oliveira
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores BThiago Colares
 

What's hot (20)

Servidores Web
Servidores Web Servidores Web
Servidores Web
 
At00 apostila sql
At00   apostila sqlAt00   apostila sql
At00 apostila sql
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Fundamentos de banco de dados 04 componentes sgbd
Fundamentos de banco de dados   04 componentes sgbdFundamentos de banco de dados   04 componentes sgbd
Fundamentos de banco de dados 04 componentes sgbd
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Diagramas de Fluxo de Dados
Diagramas de Fluxo de DadosDiagramas de Fluxo de Dados
Diagramas de Fluxo de Dados
 
Banco De Dados
Banco De DadosBanco De Dados
Banco De Dados
 
Árvores Rubro Negra
Árvores Rubro NegraÁrvores Rubro Negra
Árvores Rubro Negra
 
SI - Arquiteturas
SI - ArquiteturasSI - Arquiteturas
SI - Arquiteturas
 
Sistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidosSistemas operacionais sistemas-distribuidos
Sistemas operacionais sistemas-distribuidos
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Sd01 (si) sistemas de arquivos
Sd01 (si)   sistemas de arquivosSd01 (si)   sistemas de arquivos
Sd01 (si) sistemas de arquivos
 
Árvores balanceadas - AVL
Árvores balanceadas - AVLÁrvores balanceadas - AVL
Árvores balanceadas - AVL
 
Gerenciamento de Serviços de TI.pdf
Gerenciamento de Serviços de TI.pdfGerenciamento de Serviços de TI.pdf
Gerenciamento de Serviços de TI.pdf
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Aula03 - JavaScript
Aula03 - JavaScriptAula03 - JavaScript
Aula03 - JavaScript
 
Virtualização - Máquinas Virtuais
Virtualização - Máquinas VirtuaisVirtualização - Máquinas Virtuais
Virtualização - Máquinas Virtuais
 
Modelo de Referência OSI
Modelo de Referência OSIModelo de Referência OSI
Modelo de Referência OSI
 
Introdução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticasIntrodução ao desenvolvimento de páginas web estáticas
Introdução ao desenvolvimento de páginas web estáticas
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores B
 

Árvores AVL: estrutura de dados auto-balanceada

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