if969 - Árvores avl
TRANSCRIPT
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 1/39
ÁrvoresAVL
CentrodeInformá-ca
UniversidadeFederaldePernambuco
SistemasdeInformação
ViniciusCardosoGarcia
©2011–ViniciusCardosoGarcia
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 2/39
Introdução
• Pesquisasu-lizandoárvoresbináriasdebuscaaumentamodesempenhoemrelaçãoabuscaemlistasencadeadasouvetores.
• Noentanto,àmedidaemqueaárvorevaisendomodificada(atravésdeinserçõeseremoções),elapodeficardegenerada.
• Árvoresbalanceadasvisammaximizarodesempenhodebuscasemárvoresbinárias
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
2
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 3/39
Problema
• Exemplo:50,20,39,42,40
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
3
50
20
39
42
Aárvorebináriapodedegenerar
paraumaestruturapróximaaumalistaligada,eotempodeacessodeixadeserlogarítmico.
40
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 4/39
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 5/39
Outropossívelproblema
• Exemplo:50,20,10
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
5
50
20
Apósainserçãodoelemento10,aárvorebináriaperdea
propriedadeAVL.SOLUÇÃO:Rotação.
10
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 6/39
RotaçãoSimplesàDireita
• Inserçãoàesquerdadeárvoredesbalanceadaàesquerda(bal=-1)
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
6
PromoveroelementodomeioatravésdeumgironosenYdohorário.
50
20
10
20
10 50
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 7/39
RotaçãoSimplesàEsquerda
• Inserçãoàdireitadeárvoredesbalanceadaàdireta(bal=+1)
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
7
PromoveroelementodomeioatravésdeumgironosenYdoanY-horário.
50
20
10
10
20
50
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 8/39
FatordeBalanceamento
• Ofatordebalanceamentodeumnóédadopeloseupesoemrelaçãoasuasubárvore.
• Umnópodeterumfatorbalanceadode1,0,ou1.
• Umnócomfatordebalanceamento2ou2éconsideradoumárvorenãoAVLerequerumbalanceamentoporrotaçãoouduplarotação.
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
8
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 9/39
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 10/39
ÁrvoresAVL
• ÁrvoresAVLsãobalanceadas
• UmaárvoreAVLéumaABPtalqueparacada
nóinternovdeT,asalturasdosfilhosdev
podemdiferirdeno
máximo1.
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
10
88
44
17 78
32 50
48 62
2
4
1
1
2
3
1
1
An example of an AVL tree where theheights are shown next to the nodes:
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 11/39
ÁrvoresAVL:Exemplos
• UmexemplodeumaárvoreAVLcomaalturadecadanó
44
17 78
32 50 88
6248 0 0
1 0
2
3
1
0
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
11
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 12/39
44
17 78
32 50 88
6248 0 0
0 0
1
1
1
0
Fatordebalanceamento
• GuardaadiferençadealturaentreSAEeSAD
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
12
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 13/39
Exemplo:árvoreeseusfatores
1
0
01
10 10
0 0 0 0 0 0
0 0 0
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
13
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 14/39
Inserções
1
0
01
10 10
0 0 0 0 0 0
0 0 0
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
14
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 15/39
1
0
01
10 10
0 0 0 0 0 0
0 0 0
Possíveisinserções–Árv.Balanceada
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
15
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 16/39
1
0
01
10 10
0 0 0 0 0 0
0 0 0
Possíveisinserções–Árv.Desbal.
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
16
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 17/39
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
17
Inserçõesquetornamaárv.desbal.Apenasseonóinseridoforàesquerdadeumnócombalanceamento=1...
1
0
01
10 10
0 0 0 0 0 0
0 0 0
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 18/39
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
18
Inserçõesquetornamaárv.desbal....ouàdireitadeumnócombalanceamento=1.
1
0
01
10 10
0 0 0 0 0 0
0 0 0
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 19/39
Tratandoinserçõesquetornamaárvoredesbalanceada
• ExistemquatrocasosnosquaisaárvoreAVLtornasedesbalanceada:
– Quandoobalanceamentodaraizdasubárvoreeraiguala1:• Caso1:OnóéinseridonaSAE
• Caso2:OnóéinseridonaSAD
– Quandoobalanceamentodaraizdasubárvore
eraiguala1:• Caso3:OnóéinseridonaSAE
• Caso4:OnóéinseridonaSAD
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
19
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 20/39
Tratandoinserçõesquetornamaárvoredesbalanceada
• ExistemquatrocasosnosquaisaárvoreAVLtornasedesbalanceada:
– Quandoobalanceamentodaraizdasubárvoreeraiguala1:• Caso1:OnóéinseridonaSAE
• Caso2:OnóéinseridonaSAD
– Quandoobalanceamentodaraizdasubárvore
eraiguala1:• Caso3:OnóéinseridonaSAE
• Caso4:OnóéinseridonaSAD
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
20
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 21/39
Caso1:Raizcombal=1,nónaSAE
A1
B0
T3
alturan
T2alturan
T1alturan
?
Énecessáriaumarotaçãoàdireitaparabalancearaárvore...
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
21
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 22/39
Caso1:Raizcombal=1,nónaSAE
A
B T3
alturan
T2
alturan
T1alturan
?
A
B
T3
alturanT2
alturan
T1
alturan
?
Rotaçãoàdireita
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 23/39
Tratandoinserçõesquetornamaárvoredesbalanceada
• ExistemquatrocasosnosquaisaárvoreAVLtornasedesbalanceada: – Quandoobalanceamentodaraizdasubárvore
eraiguala1:• Caso1:OnóéinseridonaSAE
• Caso2:OnóéinseridonaSAD
– Quandoobalanceamentodaraizdasubárvore
eraiguala1:• Caso3:OnóéinseridonaSAE
• Caso4:OnóéinseridonaSAD
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
23
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 24/39
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 25/39
Caso2:Raizcombal=1,nónaSAD
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemA.
A1
B0
T3T2alturan1
T1
alturan
?
C 0
alturan1
T4
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
25
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 26/39
Caso2:Raizcombal=1,nónaSAD
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemA.
A
BT3
T2
alturan1
T1
alturan
?
C
alturan1
T4
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
26
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 27/39
Caso2:Raizcombal=1,nónaSAD
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemA.
A
BT3
T2
alturan1
T1
alturan
?
C
alturan1
T4
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
27
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 28/39
Caso2:Raizcombal=1,nónaSAD
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemA.AB
T3T2
alturan1
T1
alturan
?
C
alturan1T4
alturan
0
0 1
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
28
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 29/39
Tratandoinserçõesquetornamaárvoredesbalanceada
• ExistemquatrocasosnosquaisaárvoreAVLtornasedesbalanceada:
– Quandoobalanceamentodaraizdasubárvoreeraiguala1:• Caso1:OnóéinseridonaSAE
• Caso2:OnóéinseridonaSAD
– Quandoobalanceamentodaraizdasubárvore
eraiguala1:• Caso3:OnóéinseridonaSAE
• Caso4:OnóéinseridonaSAD
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
29
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 30/39
Caso3:Raizcombal=-1,nónaSAE
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemA.
A 1
B0
T2 T3 alturan1
T4
alturan
?
C0
alturan1
T1
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
30
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 31/39
Caso3:Raizcombal=-1,nónaSAE
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemA.
A 1
B0
T2 T3 alturan1
T4
alturan
?
C0
alturan1
T1
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
31
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 32/39
Caso3:Raizcombal=-1,nónaSAE
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemA.
A
BT2
T3
alturan1T4
alturan
?
C
alturan1
T1
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
32
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 33/39
Caso3:Raizcombal=-1,nónaSAE
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemA.
A
BT2
T3
alturan1
T4
alturan
?
C
alturan1
T1
alturan
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
33
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 34/39
Nestecasoénecessáriaumaduplarotação:1. Éfeitaumarotaçãoàdireitana
subárvoreenraizadaemB.2. Éfeitaumarotaçãoàesquerdana
subárvoreenraizadaemA.AB
T3T2
alturan1
T1
alturan
?
C
alturan1T4
alturan
0
0 1
Caso3:Raizcombal=-1,nónaSAE
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
34
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 35/39
Tratandoinserçõesquetornamaárvoredesbalanceada
• ExistemquatrocasosnosquaisaárvoreAVLtornasedesbalanceada:
– Quandoobalanceamentodaraizdasubárvoreeraiguala1:• Caso1:OnóéinseridonaSAE• Caso2:OnóéinseridonaSAD
– Quandoobalanceamentodaraizdasubárvore
eraiguala1:• Caso3:OnóéinseridonaSAE
• Caso4:OnóéinseridonaSAD
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
35
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 36/39
Caso4:Raizcombal=-1,nónaSAD
A 1
B 0
T1
alturan
T2alturan
T3alturan
?
Énecessáriaumarotaçãoàesquerdaparabalancearaárvore...
AlgoritmoseEstruturadeDadosÁrvoresAVL©2011–ViniciusCardosoGarcia
36
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 37/39
Caso4:Raizcombal=-1,nónaSAD
A
BT1
alturan
T2
alturan
T3alturan
?
A
B
T1
alturan
T2
alturan
T3
alturan
?
Rotaçãoàesquerda
AlgoritmoseEstruturadeDados
ÁrvoresAVL©2011–ViniciusCardosoGarcia
37
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 38/39
Implementação-Operações
• Avlcriar(intchave);• Avlinserir(Avla,intchave);• voidimprimir(Avla);• voidimprimirOrdemSimetrica(Avla);• Avlremover(Avla,intchave);• Avlbuscar(Avlraiz,intchave);• AvlrotacaoDireita(Avlraiz);• AvlrotacaoEsquerda(Avlraiz);• AvlrotacaoEsquerdaDireita(Avlraiz);•
AvlrotacaoDireitaEsquerda(Avlraiz);• intfator(Avla);• Avlbalancear(Avla);• voidajustarAltura(Avla);
AlgoritmoseEstruturadeDados
ÁrvoresAVL©2011–ViniciusCardosoGarcia
38
8/3/2019 if969 - Árvores AVL
http://slidepdf.com/reader/full/if969-arvores-avl 39/39
AYvidadescomplementares
• Leituradocapítulo12dolivrodoCormen
• ImplementarosalgoritmosdeÁrvoreAVL
AlgoritmoseEstruturadeDados
Á AVL 39