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

Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosFabio Moura Pereira
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Leinylson Fontinele
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de DadosRoberto Grande
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Redes - Enderecamento IP
Redes - Enderecamento IPRedes - Enderecamento IP
Redes - Enderecamento IPLuiz Arthur
 
Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)Fernando Passold
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
Segurança de Dados e Informações - Aula 5 - Firewall | IptablesSegurança de Dados e Informações - Aula 5 - Firewall | Iptables
Segurança de Dados e Informações - Aula 5 - Firewall | IptablesMinistério Público da Paraíba
 

La actualidad más candente (20)

Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
06 - Servidor Apache
06 - Servidor Apache06 - Servidor Apache
06 - Servidor Apache
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
Introdução à Computação: Aula Prática - Sistemas Operacionais (simulando proc...
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Normalização - Banco de Dados
Normalização - Banco de DadosNormalização - Banco de Dados
Normalização - Banco de Dados
 
Administração de Redes Linux - II
Administração de Redes Linux - IIAdministração de Redes Linux - II
Administração de Redes Linux - II
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Redes - Enderecamento IP
Redes - Enderecamento IPRedes - Enderecamento IP
Redes - Enderecamento IP
 
Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)Mapas de Karnaugh (introdução, até 4 variáveis)
Mapas de Karnaugh (introdução, até 4 variáveis)
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
Segurança de Dados e Informações - Aula 5 - Firewall | IptablesSegurança de Dados e Informações - Aula 5 - Firewall | Iptables
Segurança de Dados e Informações - Aula 5 - Firewall | Iptables
 
Árvore B
Árvore BÁrvore B
Árvore B
 
Servidor web
Servidor webServidor web
Servidor web
 

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