SlideShare una empresa de Scribd logo
1 de 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.

Más contenido relacionado

La actualidad más candente

Arquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeraçãoArquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeraçãoAlex Camargo
 
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefBD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefRodrigo Kiyoshi Saito
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Sistema de Gerenciamento de Locadora de Vídeo - Banco de Dados
Sistema de Gerenciamento de Locadora de Vídeo - Banco de DadosSistema de Gerenciamento de Locadora de Vídeo - Banco de Dados
Sistema de Gerenciamento de Locadora de Vídeo - Banco de DadosGleyciana Garrido
 
Servidores Web
Servidores Web Servidores Web
Servidores Web bastosluis
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaLoiane Groner
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
Permissão de Acesso - Sistema de Arquivos Linux
Permissão de Acesso - Sistema de Arquivos LinuxPermissão de Acesso - Sistema de Arquivos Linux
Permissão de Acesso - Sistema de Arquivos LinuxWellington Oliveira
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dadosvini_campos
 

La actualidad más candente (20)

Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Modelo de Referência OSI
Modelo de Referência OSIModelo de Referência OSI
Modelo de Referência OSI
 
Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida) Lista de exercícios em Bash (resolvida)
Lista de exercícios em Bash (resolvida)
 
Arquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeraçãoArquitetura de Computadores: Sistemas de numeração
Arquitetura de Computadores: Sistemas de numeração
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. RefBD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
BD I - Aula 03 - Atributos, Tuplas, PK, FK, Relacionamento, Int. Ref
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Sistema de Gerenciamento de Locadora de Vídeo - Banco de Dados
Sistema de Gerenciamento de Locadora de Vídeo - Banco de DadosSistema de Gerenciamento de Locadora de Vídeo - Banco de Dados
Sistema de Gerenciamento de Locadora de Vídeo - Banco de Dados
 
Servidores Web
Servidores Web Servidores Web
Servidores Web
 
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com JavaExercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
Exercicios Filas (Queues) - Estruturas de dados e algoritmos com Java
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
 
Permissão de Acesso - Sistema de Arquivos Linux
Permissão de Acesso - Sistema de Arquivos LinuxPermissão de Acesso - Sistema de Arquivos Linux
Permissão de Acesso - Sistema de Arquivos Linux
 
Aula 1
Aula 1Aula 1
Aula 1
 
Exercicios java básico
Exercicios java básicoExercicios java básico
Exercicios java básico
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 

Árvores binárias balanceadas

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