SlideShare ist ein Scribd-Unternehmen logo
1 von 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.

Weitere ähnliche Inhalte

Was ist angesagt?

Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Gustavo Zimmermann
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoLeinylson Fontinele
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosjulianaveregue
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggersflaviognm
 
Conceitos geraiss gestão de base dados
Conceitos geraiss gestão de base dadosConceitos geraiss gestão de base dados
Conceitos geraiss gestão de base dadosBruno Pereira
 
TDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura EmpresarialTDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura Empresarialtdc-globalcode
 
Árvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programaçãoÁrvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programaçãoEverson Wolf
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01thomasdacosta
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...AWSKRUG - AWS한국사용자모임
 

Was ist angesagt? (20)

Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Pascal Arquivos
Pascal ArquivosPascal Arquivos
Pascal Arquivos
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
 
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro BancoBanco de Dados I - Aula Prática - Criando o Primeiro Banco
Banco de Dados I - Aula Prática - Criando o Primeiro Banco
 
Modelo relatorio pim
Modelo relatorio pimModelo relatorio pim
Modelo relatorio pim
 
Modelagem relacional e normalização de dados
Modelagem relacional e normalização de dadosModelagem relacional e normalização de dados
Modelagem relacional e normalização de dados
 
Sistemas de Informação
Sistemas de InformaçãoSistemas de Informação
Sistemas de Informação
 
Como montar um BSC para TI !
Como montar um BSC para TI !Como montar um BSC para TI !
Como montar um BSC para TI !
 
Stored Procedures and Triggers
Stored Procedures and TriggersStored Procedures and Triggers
Stored Procedures and Triggers
 
Conceitos geraiss gestão de base dados
Conceitos geraiss gestão de base dadosConceitos geraiss gestão de base dados
Conceitos geraiss gestão de base dados
 
Árvore B
Árvore BÁrvore B
Árvore B
 
Mapeamento objeto relacional
Mapeamento objeto relacionalMapeamento objeto relacional
Mapeamento objeto relacional
 
TDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura EmpresarialTDC2016SP - Trilha Arquitetura Empresarial
TDC2016SP - Trilha Arquitetura Empresarial
 
TCO e otimização de custos na AWS
TCO e otimização de custos na AWSTCO e otimização de custos na AWS
TCO e otimização de custos na AWS
 
Árvores balanceadas - AVL
Árvores balanceadas - AVLÁrvores balanceadas - AVL
Árvores balanceadas - AVL
 
Árvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programaçãoÁrvore B estruturas de dados e técnicas de programação
Árvore B estruturas de dados e técnicas de programação
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Aula prolog 02 ia
Aula prolog 02   iaAula prolog 02   ia
Aula prolog 02 ia
 
Javascript aula 01 - visão geral
Javascript   aula 01 - visão geralJavascript   aula 01 - visão geral
Javascript aula 01 - visão geral
 
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
스타트업 나홀로 데이터 엔지니어: 데이터 분석 환경 구축기 - 천지은 (Tappytoon) :: AWS Community Day Onlin...
 

Á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.