SlideShare uma empresa Scribd logo
Árvores AVL (Material adaptado)
Prof. Daniel Cosme Mendonça Maia
(daniel.maia@ifnmg.edu.br / daniel_maiabr@yahoo.com.br)
 A altura de uma árvore binária é o nível
máximo de suas folhas (profundidade);
 Uma árvore binária é considerada AVL se, e
somente se, é uma árvore binária na qual as
alturas das duas subárvores (esquerda e
direita) nunca difere em mais de 1 unidade.
 O balanceamento de um NÓ é definido como a
altura de sua subárvore direita menos a altura
de sua subárvore esquerda (Fator de
balanceamento ou FB).
 Cada nó numa árvore binária balanceada
(AVL) tem balanceamento de +1, -1 ou 0.
 Se o valor do balanceamento do nó for
diferente de +1, -1 e 0. Essa árvore não é
balanceada (AVL).
 É uma estrutura de dados que oferece operações de inserção,
remoção e busca em tempo logaritmo, ou seja, é um
algoritmo rápido.
 Se a probabilidade de pesquisar um dado for a mesma para
todos os dados, uma árvore binária balanceada determinará a
busca mais eficiente.
 Os algoritmos vistos até então não garantem que a árvore
fique balanceada, assim, o algoritmo da árvore AVL busca
deixar a árvore com a menor altura possível.
 Para cada nó, define-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)
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 (sentido anti-horário)
c) Se FB for negativo (-), a rotação é para à direita
(sentido horário)
 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ó.
 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.
 http://wiki.icmc.usp.br/images/f/f0/AVL.pdf
 http://pt.slideshare.net/renatopaschoal/rvor
es-binrias-balanceadas

Mais conteúdo relacionado

Mais procurados

Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
vini_campos
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
Felipe J. R. Vieira
 
Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
Cristiano Pires Martins
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
Daniel Brandão
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamentoCarlos Melo
 
Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
Leinylson Fontinele
 
Algoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetiçãoAlgoritmos 05 - Estruturas de repetição
Algoritmos 05 - Estruturas de repetição
Professor Samuel Ribeiro
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetosDaiana de Ávila
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
Leinylson Fontinele
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
Jorge Ávila Miranda
 
Aula 1 - 31 Jan 23.pdf
Aula 1 - 31 Jan 23.pdfAula 1 - 31 Jan 23.pdf
Aula 1 - 31 Jan 23.pdf
edilson42986
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
Elaine Cecília Gatto
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
alexculpado
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
Daniel Brandão
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
Cleyton Ferrari
 
Modelo Conceitual MER
Modelo Conceitual MERModelo Conceitual MER
Modelo Conceitual MER
Joel Santos
 

Mais procurados (20)

Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
1.Introdução Banco de Dados
1.Introdução Banco de Dados1.Introdução Banco de Dados
1.Introdução Banco de Dados
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Aula 08 - árvores
Aula 08 - árvoresAula 08 - árvores
Aula 08 - árvores
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Modelo entidade relacionamento
Modelo entidade relacionamentoModelo entidade relacionamento
Modelo entidade relacionamento
 
Estrutura de Dados - Grafos
Estrutura de Dados - GrafosEstrutura de Dados - Grafos
Estrutura de Dados - Grafos
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore 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
 
Modelo orientado a objetos
Modelo orientado a objetosModelo orientado a objetos
Modelo orientado a objetos
 
Pesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - ApresentaçãoPesquisa e Ordenação Aula 01 - Apresentação
Pesquisa e Ordenação Aula 01 - Apresentação
 
Aula 4 banco de dados
Aula 4   banco de dados Aula 4   banco de dados
Aula 4 banco de dados
 
Aula 1 - 31 Jan 23.pdf
Aula 1 - 31 Jan 23.pdfAula 1 - 31 Jan 23.pdf
Aula 1 - 31 Jan 23.pdf
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Modelo Conceitual MER
Modelo Conceitual MERModelo Conceitual MER
Modelo Conceitual MER
 

Último

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
Jonathas Muniz
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 

Último (6)

Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 

Árvores Balanceadas AVL

  • 1. Árvores AVL (Material adaptado) Prof. Daniel Cosme Mendonça Maia (daniel.maia@ifnmg.edu.br / daniel_maiabr@yahoo.com.br)
  • 2.  A altura de uma árvore binária é o nível máximo de suas folhas (profundidade);  Uma árvore binária é considerada AVL se, e somente se, é uma árvore binária na qual as alturas das duas subárvores (esquerda e direita) nunca difere em mais de 1 unidade.  O balanceamento de um NÓ é definido como a altura de sua subárvore direita menos a altura de sua subárvore esquerda (Fator de balanceamento ou FB).
  • 3.  Cada nó numa árvore binária balanceada (AVL) tem balanceamento de +1, -1 ou 0.  Se o valor do balanceamento do nó for diferente de +1, -1 e 0. Essa árvore não é balanceada (AVL).
  • 4.
  • 5.
  • 6.
  • 7.  É uma estrutura de dados que oferece operações de inserção, remoção e busca em tempo logaritmo, ou seja, é um algoritmo rápido.  Se a probabilidade de pesquisar um dado for a mesma para todos os dados, uma árvore binária balanceada determinará a busca mais eficiente.  Os algoritmos vistos até então não garantem que a árvore fique balanceada, assim, o algoritmo da árvore AVL busca deixar a árvore com a menor altura possível.
  • 8.  Para cada nó, define-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
  • 9.  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.
  • 10.  Rotação simples à esquerda
  • 11.  Rotação simples à direita
  • 12.  Rotação dupla à esquerda (rotação simples à direita + rotação simples à esquerda)
  • 13.  Rotação dupla à direita (rotação simples à esquerda + rotação simples à direita)
  • 14. 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 (sentido anti-horário) c) Se FB for negativo (-), a rotação é para à direita (sentido horário)
  • 15.  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.
  • 16.  Após a rotação simples teremos:  Agora a árvore está balanceada.
  • 17.  Como podemos observar, a árvore está balanceada pelos FB de cada nó.
  • 18.  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.
  • 19.  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.
  • 20.  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.