SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Árvores AVL
Estrutura de Dados II
Jairo Francisco de Souza
Introdução
As árvores binárias de pesquisa são projetadas
para um acesso rápido à informação. Idealmente
a árvore deve ser razoavelmente equilibrada e a
sua altura será dada (no caso de estar completa)
por h=log2
(n+1)
O tempo de pesquisa tende a O(log2
N)
Porém, com sucessivas inserções de dados
principalmente ordenados, ela pode se degenerar
para O(n)
Conceito de balanceamento
Árvores completas são aquelas que minimizam
o número de comparações efetuadas no pior caso
para uma busca com chaves de probabilidades de
ocorrências idênticas.
Contudo, para garantir essa propriedade em
aplicações dinâmicas, é preciso reconstruir a
árvore para seu estado ideal a cada operação
sobre seus nós (inclusão ou exclusão).
Conceito de balanceamento
Exemplo:
Suponha a inclusão da chave 0 (zero).
4 12
8
2 106 14
1 53 7 9 1311
Conceito de balanceamento
Exemplo:
4 12
8
2 106 14
1 53 7 9 1311
0
Conceito de balanceamento
Exemplo:
4 12
8
2 106 14
1 53 7 9 1311
0
3 11
7
1 95 13
0 42 6 8 1210 14
Conceito de balanceamento
Para reorganizar a árvore anterior, foi utilizada
uma abordagem O(n), no pior caso.
Naturalmente, essa é uma péssima solução, uma
vez que operações como inserção e remoção
geralmente são efetuados em O(logn) passos.
Por esse motivo, árvores completas não são
recomendadas para aplicações que requeiram
estruturas dinâmicas.
Conceito de balanceamento
Alternativa: utilizar um determinado tipo de
árvore binária cujo pior caso para a busca não
seja necessariamente tão pequeno quanto o
mínimo 1 + lower_bound(logn) passos pela
árvore completa.
Contudo, a altura dessa árvore deve ser da
mesma ordem de grandeza que a altura de uma
árvore completa com o mesmo número de nós.
Ou seja, deve possuir altura O(logn) para todas as suas
subárvores.
Árvore AVL

A AVL (Adelson-Velskii e Landis – 1962) é uma árvore
altamente balanceada, isto é, nas inserções e exclusões,
procura-se executar uma rotina de balanceamento tal
que as alturas das sub-árvores esquerda e sub-árvores
direita tenham alturas bem próximas

Definição

Uma árvore AVL é uma árvore na qual as alturas das
subárvores esquerda e direita de cada nó diferem no
máximo por uma unidade.

Fator de balanceamento

Altura da subárvore direita - altura da subárvore
esquerda
Exemplo
Nível 1
Nível 2
Nível 3
Nível 4
Nível 5
Árvore AVL
Em uma árvore AVL, para todo nó, seja hd a altura de uma
subárvore direita e he a altura de uma subárvore esquerda de
um nó:
hd – he є {0, 1, -1}
Se o fator de balanceamento de qualquer nó ficar
menor do que -1 ou maior do que 1 então a árvore
tem que ser balanceada.
Rotações em AVL
Na inserção utiliza-se um processo de
balanceamento que pode ser de 2 tipos
gerais:
Rotação simples
Rotação dupla
Rotações simples
k2 é nó mais profundo onde falha o equilíbrio
sub-árvore esquerda está 2 níveis abaixo da direita
Rotações dupla
Rotação simples não resolve o desequilíbrio!
sub-árvore Q está a 2 níveis de diferença de R
sub-árvore Q passa a estar a 2 níveis de diferença de P
Rotações dupla
Uma das subárvores B ou C está 2 níveis abaixo de D
k2, a chave intermédia, fica na raiz
posições de k1, k3 e subárvores completamente determinadas
pela ordenação
Rotações em AVL
Na inserção utiliza-se um processo de
balanceamento que pode ser de 4 tipos
específicos:
RR → caso Right-Right (rotação a esquerda)
LL → caso Left-Left (rotação a direita)
LR → caso Left-Right (rotação esquerda-direita)
RL → caso Right-Left (rotação direita-esquerda)
Caso Right-Right
(rotação a esquerda)
Caso Left-Left
(rotação a direita)
Left-Right
(rotação esquerda-direita)
Caso Right-Left
(rotação direita-esquerda)
Fator de Balanceamento
Coeficiente que serve como referência para
verificar se uma árvore AVL está ou não
balanceada
O fator é calculado nó a nó e leva em
consideração a diferença das alturas das
sub-árvores da direita e da esquerda
Genericamente
FB = he - hd
Exemplo – FB de cada nó
+2
-1
0
0
+1
0
Quando balancear?

Sempre que existir um fator de balanceamento
superior a +1 ou inferior a -1

Caso exista mais de um nó que se encaixe neste
perfil deve-se sempre balancear o nó com o nível
mais alto

Como balancear? Utilizando os processos:

Right-Right

Left-Left

Left-Right

Right-Left
Tipos de Balanceamento - RR
Suponha na figura que a última célula a ser
inserida foi a célula de chave 90
+
2
-2
0
-1
0
-1
0
Tipos de Balanceamento - RR
O nó X que está no nível do meio dos três
envolvidos toma o lugar do nó com FB=-2
A sub-árvore direita do nó X permanece
A sub-árvore esquerda do nó X será
colocada como sub-árvore direita do nó Y
O filho esquerdo do nó X aponta para o nó
Y
Tipos de Balanceamento - RR
Tipos de Balanceamento - RR
static Node rotacaoRR(Node
y)
{
Node x = y.right;
y.right = x.left;
x.left = y;
return x;
}
Tipos de Balanceamento - LL
Suponha na figura que a última célula a ser
inserida foi a célula de chave 5
+
2
+2
0+1
0+1
0
Tipos de Balanceamento - LL
O nó X que está no nível do meio dos três
envolvidos toma o lugar do nó com FB=-2
A sub-árvore esquerda do nó X permanece
A sub-árvore direita do nó X será colocada
como sub-árvore esquerda do nó Y
O filho direito do nó X aponta para o nó Y
Tipos de Balanceamento - LL
Tipos de Balanceamento - LL
static Node rotacaoLL(Node
y)
{
Node x = y.left;
y.left = x.right;
x.right = y;
return x;
}
Tipos de Balanceamento - LR
Suponha na figura que a última célula a ser
inserida foi a célula de chave 35
+
2
+2
0-1
0
+10
Tipos de Balanceamento - LR
O nó que está no nível mais alto das três envolvidas (nó X) toma o
lugar da célula cujo fator de balanceamento é +2 (nó Y)
A sub-árvore direita do nó X será colocada como sub-árvore esquerda
do nó Y
A sub-árvore esquerda do nó X será colocada como sub-árvore direita
do nó Z
O filho direito do nó X aponta para o nó Y
O filho esquerdo do nó X aponta para o nó Z
Tipos de Balanceamento - LR
Tipos de Balanceamento - LR
static Node rotacaoLR(Node y)
{
y.left = rotacaoRR(y.left);
return rotacaoLL(y);
}
Tipos de Balanceamento - RL
Suponha na figura que a última célula a ser
inserida foi a célula de chave 75
+2
-2
0
-1 0
+
1
0
Tipos de Balanceamento - RL
O nó que está no nível mais alto das três envolvidas (nó X)
toma o lugar da célula cujo fator de balanceamento é -2 (nó Y)
A sub-árvore direita do nó X será colocada como sub-árvore
esquerda do nó Z
A sub-árvore esquerda do nó X será colocada como sub-árvore
direita do nó Y
O filho direito do nó X aponta para o nó Y
O filho esquerdo do nó X aponta para o nó Z
Tipos de Balanceamento - RL
Tipos de Balanceamento - RL
static Node rotacaoRL(Node y)
{
y.right = rotacaoLL(y.right);
return rotacaoRR(y);
}
Árvore AVL
Mais exemplos...
Inserção de 1, 2 e 3.
Ao inserir 3, o nó raiz fica desbalanceado (+2)
Rotação à esquerda
Árvore AVL
Inserção do 4 e 5.
4: sem problemas
5: desbalanceamento do nó 3 (+2)
Rotação à esquerda
Árvore AVL
Inserção do 6
Nó 2 fica desbalanceado (+2)
Rotação à esquerda
Árvore AVL
Inserção do nó 7
Nó 5 fica desbalanceado (+2)
Rotação à esquerda
Árvore AVL
Inserção de 15 e 14
Rotação dupla: 14 e 15 à direita e depois 7 e
14 à esquerda.
Árvore AVL
Inserção do 13
Rotação do 7 e 14 à direita
Rotação de 6 e 7 à esquerda
Árvore AVL
Inserção do 12
Rotação da raiz à esquerda
Árvore AVL
Inserção do 11
Rotação de 12 e 13 à direita
Algoritmo
● Algoritmo recursivo
● Inserir nó com chave X numa árvore A
● recursivamente, inserir na subárvore conveniente de A, SA
● se a altura de SA não se modifica: terminar
● se a altura de SA é modificada: se ocorre desequilíbrio em A, fazer as rotações
necessárias para reequilibrar
● Comparação de alturas
● para evitar o cálculo repetido de alturas de sub-árvores, pode-se manter em cada
nó o resultado da comparação das alturas das sub-árvores
● Algoritmo iterativo
● Especificar parada logo que uma rotação é realizada
● Na prática, são usadas outras árvores binárias
equilibradas (como as árvores vermelho-preto) em que
a inserção ou remoção e a correspondente reposição do
equilíbrio pode ser feito mais eficientemente
Importante
●
Na inserção, caso a árvore AVL esteja
desbalanceada, basta 1 operação de
rotação para rebalanceá-la.
●
Na remoção, caso a árvore esteja
desbalanceada, pode ser necessário até
log(n) operações de rotação.
Como descobrir qual rotação
deve ser realizada?
●
Processo simples (supondo que cada nó
guarda seu fator de balanceamento):
void AVLTree<tipo>::balanceia(Celula *&x) {
if (x->b == 2) {
if (x->esq->b == -1)
rotateLeft(x->esq);
rotateRight(x);
}
else if (x->b == -2) {
if (x->dir->b == 1)
rotateRight(x->dir);
rotateLeft(x);
}
}
Exercícios
Construir uma AVL com as chaves:
(10, 20, 30, 5, 3, 50, 40, 70, 60, 90)
Construir uma AVL com as chaves:
(PSC, INF, ENG, QUI, MAT, LET, MED, ECO,
ADM)

Mais conteúdo relacionado

Mais procurados

Arminianismo x calvinismo
Arminianismo x calvinismoArminianismo x calvinismo
Arminianismo x calvinismoDaladier Lima
 
Tema 6 seitas e heresias - parte 2
Tema 6   seitas e heresias - parte 2Tema 6   seitas e heresias - parte 2
Tema 6 seitas e heresias - parte 2magnao2
 
Reações de oxidação backup
Reações de oxidação backupReações de oxidação backup
Reações de oxidação backupCarlos Kramer
 
Aula1-Conceitos de SGBD
Aula1-Conceitos de SGBDAula1-Conceitos de SGBD
Aula1-Conceitos de SGBDCris Fidelix
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersDaniel Maia
 
Meios de transmissao
Meios de transmissaoMeios de transmissao
Meios de transmissaoNikoameer
 
Lição 5 Pergamo a igreja casada com o mundo
Lição 5 Pergamo a igreja casada com o mundoLição 5 Pergamo a igreja casada com o mundo
Lição 5 Pergamo a igreja casada com o mundoJose Ventura
 
Aula 4 - Hierarquia de pastas no Linux
Aula 4 - Hierarquia de pastas no LinuxAula 4 - Hierarquia de pastas no Linux
Aula 4 - Hierarquia de pastas no LinuxCésar Augusto Pessôa
 
Ligaçoes quimicas
Ligaçoes quimicasLigaçoes quimicas
Ligaçoes quimicasAna Dias
 
Prevenção de Pneumonia Associada a Ventilação Mecânica
Prevenção de Pneumonia Associada a Ventilação MecânicaPrevenção de Pneumonia Associada a Ventilação Mecânica
Prevenção de Pneumonia Associada a Ventilação MecânicaProqualis
 
Auditoria em Arquivos - Microsoft Windows server 2008
Auditoria em Arquivos - Microsoft Windows server 2008Auditoria em Arquivos - Microsoft Windows server 2008
Auditoria em Arquivos - Microsoft Windows server 2008Joeldson Costa Damasceno
 
O modelo osi e suas 7 camadas
O modelo osi e suas 7 camadasO modelo osi e suas 7 camadas
O modelo osi e suas 7 camadasJailson Torquato
 
Eletroquimica PILHAS
Eletroquimica PILHASEletroquimica PILHAS
Eletroquimica PILHASAna Dias
 

Mais procurados (20)

Arminianismo x calvinismo
Arminianismo x calvinismoArminianismo x calvinismo
Arminianismo x calvinismo
 
Tema 6 seitas e heresias - parte 2
Tema 6   seitas e heresias - parte 2Tema 6   seitas e heresias - parte 2
Tema 6 seitas e heresias - parte 2
 
Santuário Terrestre.pps
Santuário Terrestre.ppsSantuário Terrestre.pps
Santuário Terrestre.pps
 
Reações de oxidação backup
Reações de oxidação backupReações de oxidação backup
Reações de oxidação backup
 
Aula1-Conceitos de SGBD
Aula1-Conceitos de SGBDAula1-Conceitos de SGBD
Aula1-Conceitos de SGBD
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 
Árvores Rubro Negras
Árvores Rubro NegrasÁrvores Rubro Negras
Árvores Rubro Negras
 
A Bíblia
A BíbliaA Bíblia
A Bíblia
 
Meios de transmissao
Meios de transmissaoMeios de transmissao
Meios de transmissao
 
Lição 5 Pergamo a igreja casada com o mundo
Lição 5 Pergamo a igreja casada com o mundoLição 5 Pergamo a igreja casada com o mundo
Lição 5 Pergamo a igreja casada com o mundo
 
Aula 4 - Hierarquia de pastas no Linux
Aula 4 - Hierarquia de pastas no LinuxAula 4 - Hierarquia de pastas no Linux
Aula 4 - Hierarquia de pastas no Linux
 
DPOC
DPOCDPOC
DPOC
 
Ligaçoes quimicas
Ligaçoes quimicasLigaçoes quimicas
Ligaçoes quimicas
 
Prevenção de Pneumonia Associada a Ventilação Mecânica
Prevenção de Pneumonia Associada a Ventilação MecânicaPrevenção de Pneumonia Associada a Ventilação Mecânica
Prevenção de Pneumonia Associada a Ventilação Mecânica
 
Auditoria em Arquivos - Microsoft Windows server 2008
Auditoria em Arquivos - Microsoft Windows server 2008Auditoria em Arquivos - Microsoft Windows server 2008
Auditoria em Arquivos - Microsoft Windows server 2008
 
O modelo osi e suas 7 camadas
O modelo osi e suas 7 camadasO modelo osi e suas 7 camadas
O modelo osi e suas 7 camadas
 
Como foi escrita a biblia
Como foi escrita a bibliaComo foi escrita a biblia
Como foi escrita a biblia
 
Equilíbrio químico
Equilíbrio químicoEquilíbrio químico
Equilíbrio químico
 
Eletroquimica PILHAS
Eletroquimica PILHASEletroquimica PILHAS
Eletroquimica PILHAS
 
265
265265
265
 

Último

Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfLuizaAbaAba
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxedelon1
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 

Último (20)

Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
atividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdfatividades_reforço_4°ano_231206_132728.pdf
atividades_reforço_4°ano_231206_132728.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptxSlide - EBD ADEB 2024 Licao 02 2Trim.pptx
Slide - EBD ADEB 2024 Licao 02 2Trim.pptx
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 

Árvore AVL Equilibrada

  • 1. Árvores AVL Estrutura de Dados II Jairo Francisco de Souza
  • 2. Introdução As árvores binárias de pesquisa são projetadas para um acesso rápido à informação. Idealmente a árvore deve ser razoavelmente equilibrada e a sua altura será dada (no caso de estar completa) por h=log2 (n+1) O tempo de pesquisa tende a O(log2 N) Porém, com sucessivas inserções de dados principalmente ordenados, ela pode se degenerar para O(n)
  • 3. Conceito de balanceamento Árvores completas são aquelas que minimizam o número de comparações efetuadas no pior caso para uma busca com chaves de probabilidades de ocorrências idênticas. Contudo, para garantir essa propriedade em aplicações dinâmicas, é preciso reconstruir a árvore para seu estado ideal a cada operação sobre seus nós (inclusão ou exclusão).
  • 4. Conceito de balanceamento Exemplo: Suponha a inclusão da chave 0 (zero). 4 12 8 2 106 14 1 53 7 9 1311
  • 5. Conceito de balanceamento Exemplo: 4 12 8 2 106 14 1 53 7 9 1311 0
  • 6. Conceito de balanceamento Exemplo: 4 12 8 2 106 14 1 53 7 9 1311 0 3 11 7 1 95 13 0 42 6 8 1210 14
  • 7. Conceito de balanceamento Para reorganizar a árvore anterior, foi utilizada uma abordagem O(n), no pior caso. Naturalmente, essa é uma péssima solução, uma vez que operações como inserção e remoção geralmente são efetuados em O(logn) passos. Por esse motivo, árvores completas não são recomendadas para aplicações que requeiram estruturas dinâmicas.
  • 8. Conceito de balanceamento Alternativa: utilizar um determinado tipo de árvore binária cujo pior caso para a busca não seja necessariamente tão pequeno quanto o mínimo 1 + lower_bound(logn) passos pela árvore completa. Contudo, a altura dessa árvore deve ser da mesma ordem de grandeza que a altura de uma árvore completa com o mesmo número de nós. Ou seja, deve possuir altura O(logn) para todas as suas subárvores.
  • 9. Árvore AVL  A AVL (Adelson-Velskii e Landis – 1962) é uma árvore altamente balanceada, isto é, nas inserções e exclusões, procura-se executar uma rotina de balanceamento tal que as alturas das sub-árvores esquerda e sub-árvores direita tenham alturas bem próximas  Definição  Uma árvore AVL é uma árvore na qual as alturas das subárvores esquerda e direita de cada nó diferem no máximo por uma unidade.  Fator de balanceamento  Altura da subárvore direita - altura da subárvore esquerda
  • 10. Exemplo Nível 1 Nível 2 Nível 3 Nível 4 Nível 5
  • 11. Árvore AVL Em uma árvore AVL, para todo nó, seja hd a altura de uma subárvore direita e he a altura de uma subárvore esquerda de um nó: hd – he є {0, 1, -1} Se o fator de balanceamento de qualquer nó ficar menor do que -1 ou maior do que 1 então a árvore tem que ser balanceada.
  • 12. Rotações em AVL Na inserção utiliza-se um processo de balanceamento que pode ser de 2 tipos gerais: Rotação simples Rotação dupla
  • 13. Rotações simples k2 é nó mais profundo onde falha o equilíbrio sub-árvore esquerda está 2 níveis abaixo da direita
  • 14. Rotações dupla Rotação simples não resolve o desequilíbrio! sub-árvore Q está a 2 níveis de diferença de R sub-árvore Q passa a estar a 2 níveis de diferença de P
  • 15. Rotações dupla Uma das subárvores B ou C está 2 níveis abaixo de D k2, a chave intermédia, fica na raiz posições de k1, k3 e subárvores completamente determinadas pela ordenação
  • 16. Rotações em AVL Na inserção utiliza-se um processo de balanceamento que pode ser de 4 tipos específicos: RR → caso Right-Right (rotação a esquerda) LL → caso Left-Left (rotação a direita) LR → caso Left-Right (rotação esquerda-direita) RL → caso Right-Left (rotação direita-esquerda)
  • 21. Fator de Balanceamento Coeficiente que serve como referência para verificar se uma árvore AVL está ou não balanceada O fator é calculado nó a nó e leva em consideração a diferença das alturas das sub-árvores da direita e da esquerda Genericamente FB = he - hd
  • 22. Exemplo – FB de cada nó +2 -1 0 0 +1 0
  • 23. Quando balancear?  Sempre que existir um fator de balanceamento superior a +1 ou inferior a -1  Caso exista mais de um nó que se encaixe neste perfil deve-se sempre balancear o nó com o nível mais alto  Como balancear? Utilizando os processos:  Right-Right  Left-Left  Left-Right  Right-Left
  • 24. Tipos de Balanceamento - RR Suponha na figura que a última célula a ser inserida foi a célula de chave 90 + 2 -2 0 -1 0 -1 0
  • 25. Tipos de Balanceamento - RR O nó X que está no nível do meio dos três envolvidos toma o lugar do nó com FB=-2 A sub-árvore direita do nó X permanece A sub-árvore esquerda do nó X será colocada como sub-árvore direita do nó Y O filho esquerdo do nó X aponta para o nó Y
  • 27. Tipos de Balanceamento - RR static Node rotacaoRR(Node y) { Node x = y.right; y.right = x.left; x.left = y; return x; }
  • 28. Tipos de Balanceamento - LL Suponha na figura que a última célula a ser inserida foi a célula de chave 5 + 2 +2 0+1 0+1 0
  • 29. Tipos de Balanceamento - LL O nó X que está no nível do meio dos três envolvidos toma o lugar do nó com FB=-2 A sub-árvore esquerda do nó X permanece A sub-árvore direita do nó X será colocada como sub-árvore esquerda do nó Y O filho direito do nó X aponta para o nó Y
  • 31. Tipos de Balanceamento - LL static Node rotacaoLL(Node y) { Node x = y.left; y.left = x.right; x.right = y; return x; }
  • 32. Tipos de Balanceamento - LR Suponha na figura que a última célula a ser inserida foi a célula de chave 35 + 2 +2 0-1 0 +10
  • 33. Tipos de Balanceamento - LR O nó que está no nível mais alto das três envolvidas (nó X) toma o lugar da célula cujo fator de balanceamento é +2 (nó Y) A sub-árvore direita do nó X será colocada como sub-árvore esquerda do nó Y A sub-árvore esquerda do nó X será colocada como sub-árvore direita do nó Z O filho direito do nó X aponta para o nó Y O filho esquerdo do nó X aponta para o nó Z
  • 35. Tipos de Balanceamento - LR static Node rotacaoLR(Node y) { y.left = rotacaoRR(y.left); return rotacaoLL(y); }
  • 36. Tipos de Balanceamento - RL Suponha na figura que a última célula a ser inserida foi a célula de chave 75 +2 -2 0 -1 0 + 1 0
  • 37. Tipos de Balanceamento - RL O nó que está no nível mais alto das três envolvidas (nó X) toma o lugar da célula cujo fator de balanceamento é -2 (nó Y) A sub-árvore direita do nó X será colocada como sub-árvore esquerda do nó Z A sub-árvore esquerda do nó X será colocada como sub-árvore direita do nó Y O filho direito do nó X aponta para o nó Y O filho esquerdo do nó X aponta para o nó Z
  • 39. Tipos de Balanceamento - RL static Node rotacaoRL(Node y) { y.right = rotacaoLL(y.right); return rotacaoRR(y); }
  • 40. Árvore AVL Mais exemplos... Inserção de 1, 2 e 3. Ao inserir 3, o nó raiz fica desbalanceado (+2) Rotação à esquerda
  • 41. Árvore AVL Inserção do 4 e 5. 4: sem problemas 5: desbalanceamento do nó 3 (+2) Rotação à esquerda
  • 42. Árvore AVL Inserção do 6 Nó 2 fica desbalanceado (+2) Rotação à esquerda
  • 43. Árvore AVL Inserção do nó 7 Nó 5 fica desbalanceado (+2) Rotação à esquerda
  • 44. Árvore AVL Inserção de 15 e 14 Rotação dupla: 14 e 15 à direita e depois 7 e 14 à esquerda.
  • 45. Árvore AVL Inserção do 13 Rotação do 7 e 14 à direita Rotação de 6 e 7 à esquerda
  • 46. Árvore AVL Inserção do 12 Rotação da raiz à esquerda
  • 47. Árvore AVL Inserção do 11 Rotação de 12 e 13 à direita
  • 48. Algoritmo ● Algoritmo recursivo ● Inserir nó com chave X numa árvore A ● recursivamente, inserir na subárvore conveniente de A, SA ● se a altura de SA não se modifica: terminar ● se a altura de SA é modificada: se ocorre desequilíbrio em A, fazer as rotações necessárias para reequilibrar ● Comparação de alturas ● para evitar o cálculo repetido de alturas de sub-árvores, pode-se manter em cada nó o resultado da comparação das alturas das sub-árvores ● Algoritmo iterativo ● Especificar parada logo que uma rotação é realizada ● Na prática, são usadas outras árvores binárias equilibradas (como as árvores vermelho-preto) em que a inserção ou remoção e a correspondente reposição do equilíbrio pode ser feito mais eficientemente
  • 49. Importante ● Na inserção, caso a árvore AVL esteja desbalanceada, basta 1 operação de rotação para rebalanceá-la. ● Na remoção, caso a árvore esteja desbalanceada, pode ser necessário até log(n) operações de rotação.
  • 50. Como descobrir qual rotação deve ser realizada? ● Processo simples (supondo que cada nó guarda seu fator de balanceamento): void AVLTree<tipo>::balanceia(Celula *&x) { if (x->b == 2) { if (x->esq->b == -1) rotateLeft(x->esq); rotateRight(x); } else if (x->b == -2) { if (x->dir->b == 1) rotateRight(x->dir); rotateLeft(x); } }
  • 51. Exercícios Construir uma AVL com as chaves: (10, 20, 30, 5, 3, 50, 40, 70, 60, 90) Construir uma AVL com as chaves: (PSC, INF, ENG, QUI, MAT, LET, MED, ECO, ADM)