SlideShare uma empresa Scribd logo
2
Mais lidos
4
Mais lidos
18
Mais lidos
Á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).
Árvores Balanceadas AVL
Árvores Balanceadas AVL
Árvores Balanceadas 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

PDF
Árvores balanceadas - AVL
PDF
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
PDF
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
PDF
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
PDF
Árvores: Conceitos e binárias
PPTX
Estrutura de Dados - Conceitos fundamentais
PDF
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
PPT
Gerência de Armazenamento: Implementação do Sistema de Arquivos
Árvores balanceadas - AVL
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Árvores: Conceitos e binárias
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Aula 12 - Listas Duplamente Encadeadas
Gerência de Armazenamento: Implementação do Sistema de Arquivos

Mais procurados (20)

PDF
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
PDF
Sistema de numeração
PDF
Redes 6 equipamentos ativos da rede
PDF
Banco de dados exercícios resolvidos
PDF
Introdução à Programação em Python
DOCX
Quiz 2 sdac portas lógicas
PPT
Grafos e Árvores
PDF
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
PPT
Substituição aromática eletrofilíca
PPT
Árvore Binária
PPTX
Estrutura de dados em Java - Árvores Binárias
PDF
Banco de Dados II Aula 01 - Apresentação
ODP
Aula10 sql-ddl
PDF
Esquema de ligação
PDF
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
PDF
Aula1 - Apresentação de Banco de Dados
PDF
Manual wireshark
PPTX
Avl trees
PDF
As cores do permanganato pontociencia
PPTX
3 DRAEI - Técnicas de diagnóstico e reparação de avarias
Estrutura de Dados Aula 13 - Árvores (conceito, elementos, tipos e utilizações)
Sistema de numeração
Redes 6 equipamentos ativos da rede
Banco de dados exercícios resolvidos
Introdução à Programação em Python
Quiz 2 sdac portas lógicas
Grafos e Árvores
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Substituição aromática eletrofilíca
Árvore Binária
Estrutura de dados em Java - Árvores Binárias
Banco de Dados II Aula 01 - Apresentação
Aula10 sql-ddl
Esquema de ligação
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Aula1 - Apresentação de Banco de Dados
Manual wireshark
Avl trees
As cores do permanganato pontociencia
3 DRAEI - Técnicas de diagnóstico e reparação de avarias
Anúncio

Último (11)

PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PPTX
Tipos de servidor em redes de computador.pptx
PPTX
Eng. Software - pontos essenciais para o início
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Utilizando code blockes por andre backes
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Design - Introdução a Gestalt e teoria das formas
PDF
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
Tipos de servidor em redes de computador.pptx
Eng. Software - pontos essenciais para o início
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Arquitetura de computadores - Memórias Secundárias
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Utilizando code blockes por andre backes
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Design - Introdução a Gestalt e teoria das formas
Manejo integrado de pragas na cultura do algodão
Anúncio

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