Upload
mateus-barbosa
View
233
Download
0
Embed Size (px)
Citation preview
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
1/34
RVORES AVL
Lvia N. Andrade
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
2/34
rvores AVL
Recebem esse nome em homenagem aos seus criadores,os matemticos russos AdelsonVelskii e Landis, 1962.
ma rvore AVL ! uma rvore binria de "es#uisa onde adi$eren%a em altura entre as subrvore es#uerda e direita !no m&imo 1 '"ositivo ou negativo(.
)uando a di$eren%a chega a 2 ou *2, deve ser re$eito obalanceamento atrav!s de rota%+es.
hamamos essa di$eren%a de -$ator de balanceamento.
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
3/34
/escri%0o das rota%+es
Diferena dealtura de um
n
Diferena de altura don lho do n
desbalanceado
Tipo de rotao
2
1 Simples esquerda
0 Simples esquerda
-1Dupla !m "l#! paraa direi$a e pai para aesquerda
-2 1 Dupla !m "l#! paraa esquerda e pai paraa direi$a
0 Simples direi$a
-1 Simples direi$a
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
4/34
&em"los de alanceamentoR!$a%&! simples esquerda
6
30
1
rvore Balanceada rvoreDesbalanceada
6
31
2
12
0
+ 12
30
0
6 120
rvoreBalanceada R!$a%&! simple
para a esquerd
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
5/34
'(di)! em '
** n( des+alanead! , 2
v!id re+alaneamen$!Esq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ mesm! sinal r!$a%&!
simples a esquerdaprin$45r!$aa! a esquerda !m 6ld7n5/ pu-Re).'#ave3
p-Dir , pu-Esq3 **direi$a de p ap!n$a para null
pu-Esq , p3
p-+alaneamen$! , 03p , pu3
8
p-+alaneamen$! , 03
# , 03
}
6
31
2
120
pu
p
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
6/34
'(di)! em '
** n( des+alanead! , 2
v!id re+alaneamen$!Esq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ mesm! sinal r!$a%&!
simples a esquerdaprin$45r!$aa! a esquerda !m 6ld7n5/ pu-Re).'#ave3
p-Dir , pu-Esq3 **direi$a de p ap!n$a para null
pu-Esq , p3 **p passa a ser "l#! a esquerda de pu
p-+alaneamen$! , 03p , pu3
8
p-+alaneamen$! , 03
# , 03
} 6
31
2 120
pu
p
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
7/34
'(di)! em '
** n( des+alanead! , 2
v!id re+alaneamen$!Esq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ mesm! sinal r!$a%&!
simples a esquerdaprin$45r!$aa! a esquerda !m 6ld7n5/ pu-Re).'#ave3
p-Dir , pu-Esq3 **direi$a de p ap!n$a para null
pu-Esq , p3 **p passa a ser "l#! a esquerda de pu
p-+alaneamen$! , 03 **a$uali9a :; de pp , pu3
8
p-+alaneamen$! , 03
# , 03
} 6
31
0 120
pu
p
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
8/34
'(di)! em '
** n( des+alanead! , 2
v!id re+alaneamen$!Esq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ mesm! sinal r!$a%&!
simples a esquerdaprin$45r!$aa! a esquerda !m 6ld7n5/ pu-Re).'#ave3
p-Dir , pu-Esq3 **direi$a de p ap!n$a para null
pu-Esq , p3 **p passa a ser "l#! a esquerda de pu
p-+alaneamen$! , 03 **a$uali9a :; de pp , pu3 **pu a)!ra < p
8
p-+alaneamen$! , 03 **a$uali9a :; de p
# , 03
} 6
30
0 120
p
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
9/34
/escri%0o das rota%+es
Diferena dealtura de um
n
Diferena de altura don lho do n
desbalanceado
Tipo de rotao
2
1 Simples esquerda
0 Simples esquerda
-1Dupla !m "l#! paraa direi$a e pai para aesquerda
-2 1 Dupla !m "l#! paraa esquerda e pai paraa direi$a
0 Simples direi$a
-1 Simples direi$a
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
10/34
6
3
0
1
rvore Balanceada rvoreDesbalanceada
6
3
-1
2
40
+
R!$a%&! dupla !m "l#! para a direi$a epai para a esquerda
6
40
0 30
rvore Balanceada 6
41
2
30rvore
R!$a%&! para adirei$a n! "l#! d!n(des+alanead!
R!$a%&! paraa esquerda n!
n(des+alanead
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
11/34
** n( des+alanead! , 2
v!id re+alaneamen$!DirEsq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ sinal di4eren$e r!$a%&!
dupla !m pai para esquerda e "l#! para direi$aAp!n$ad!r pv , pu-Esq3
prin$45r!$aa! dupla direi$a-esquerda !m 6ld7n5/ pv-Re).'#ave3
pu-Esq , pv-Dir3 pv-Dir , pu3
p-Dir , pv-Esq3 pv-Esq , p3
i4 pv-+alaneamen$! ,, 1 p-+alaneamen$! , -13
else p-+alaneamen$! , 03
i4 pv-+alaneamen$! ,, -1 pu-+alaneamen$! , 13
else pu-+alaneamen$! , 03p , pv3
8
p-+alaneamen$! , 03
# , 03
6
3-1
2
40
pu
pv
p
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
12/34
** n( des+alanead! , 2
v!id re+alaneamen$!DirEsq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ sinal di4eren$e r!$a%&!
dupla !m pai para esquerda e "l#! para direi$aAp!n$ad!r pv , pu-Esq3
prin$45r!$aa! dupla direi$a-esquerda !m 6ld7n5/ pv-Re).'#ave3
pu-Esq , pv-Dir3 pv-Dir , pu3 **esq de pu ap!n$a para null e pu se
$!rna "l#! direi$! de pvp-Dir , pv-Esq3 pv-Esq , p3
i4 pv-+alaneamen$! ,, 1 p-+alaneamen$! , -13
else p-+alaneamen$! , 03
i4 pv-+alaneamen$! ,, -1 pu-+alaneamen$! , 13
else pu-+alaneamen$! , 03
p , pv3
8
p-+alaneamen$! , 03
# , 03
6
40
2
3-1
pv
pu
p
** ( d + l d
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
13/34
** n( des+alanead! , 2
v!id re+alaneamen$!DirEsq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Esq3
prin$45r!$aa! dupla direi$a-esquerda !m 6ld7n5/ pv-Re).'#ave3
pu-Esq , pv-Dir3 pv-Dir , pu3 **esq de pu ap!n$a para null e pu se$!rna "l#! direi$! de pv
p-Dir , pv-Esq3 pv-Esq , p3 **dir de p ap!n$a para null e p se$!rna "l#! esquerd! de pv
i4 pv-+alaneamen$! ,, 1 p-+alaneamen$! , -13
else p-+alaneamen$! , 03
i4 pv-+alaneamen$! ,, -1 pu-+alaneamen$! , 13
else pu-+alaneamen$! , 03p , pv3
8
p-+alaneamen$! , 03
# , 03
} 6
40
2
3-1
pv
pup
** ( d + l d 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
14/34
** n( des+alanead! , 2
v!id re+alaneamen$!DirEsq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Esq3
prin$45r!$aa! dupla direi$a-esquerda !m 6ld7n5/ pv-Re).'#ave3
pu-Esq , pv-Dir3 pv-Dir , pu3 **esq de pu ap!n$a para null e pu se$!rna "l#! direi$! de pv
p-Dir , pv-Esq3 pv-Esq , p3 **dir de p ap!n$a para null e p se$!rna "l#! esquerd! de pv
i4 pv-+alaneamen$! ,, 1 p-+alaneamen$! , -13
else p-+alaneamen$! , 03 **a$uali9a :; de p
i4 pv-+alaneamen$! ,, -1 pu-+alaneamen$! , 13
else pu-+alaneamen$! , 03p , pv3
8
p-+alaneamen$! , 03
# , 03
} 6
40
0
3-1
pv
pup
** ( d + l d 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
15/34
** n( des+alanead! , 2
v!id re+alaneamen$!DirEsq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Esq3
prin$45r!$aa! dupla direi$a-esquerda !m 6ld7n5/ pv-Re).'#ave3
pu-Esq , pv-Dir3 pv-Dir , pu3 **esq de pu ap!n$a para null e pu se$!rna "l#! direi$! de pv
p-Dir , pv-Esq3 pv-Esq , p3 **dir de p ap!n$a para null e p se$!rna "l#! esquerd! de pv
i4 pv-+alaneamen$! ,, 1 p-+alaneamen$! , -13
else p-+alaneamen$! , 03 **a$uali9a :; de p
i4 pv-+alaneamen$! ,, -1 pu-+alaneamen$! , 13
else pu-+alaneamen$! , 03 **a$uali9a :; de pup , pv3
8
p-+alaneamen$! , 03
# , 03} 6
40
0
30
pv
pup
** ( d + l d 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
16/34
** n( des+alanead! , 2
v!id re+alaneamen$!DirEsq Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Dir3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Esq3
prin$45r!$aa! dupla direi$a-esquerda !m 6ld7n5/ pv-Re).'#ave3
pu-Esq , pv-Dir3 pv-Dir , pu3 **esq de pu ap!n$a para null e pu se$!rna "l#! direi$! de pv
p-Dir , pv-Esq3 pv-Esq , p3 **dir de p ap!n$a para null e p se$!rna "l#! esquerd! de pv
i4 pv-+alaneamen$! ,, 1 p-+alaneamen$! , -13
else p-+alaneamen$! , 03 **a$uali9a :; de p
i4 pv-+alaneamen$! ,, -1 pu-+alaneamen$! , 13
else pu-+alaneamen$! , 03 **a$uali9a :; de pup , pv3 **pv a)!ra < p
8
p-+alaneamen$! , 03 **a$uali9a :; de p
# , 03} 6
40
0
30
p
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
17/34
/escri%0o das rota%+es
Diferena dealtura de um
n
Diferena de altura don lho do n
desbalanceado
Tipo de rotao
2
1 Simples esquerda
0 Simples esquerda
-1Dupla !m "l#! paraa direi$a e pai para aesquerda
-2 1 Dupla !m "l#! paraa esquerda e pai paraa direi$a
0 Simples direi$a
-1 Simples direi$a
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
18/34
R!$a%&! dupla !m "l#! para a esquerdae pai para a direi$a
6
5
0
1
rvore Balanceada rvoreDesbalanceada
+ ! 6
51
-2
0
rvore
6
-1
-2
50
rvore Balanceada
6
0
0
5
0
R!$a%&! para a
esquerda n! "l#!d! n(des+alanead!
R!$a%&! para adirei$a n! n(des+alanead!
** n( des+alanead! 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
19/34
** n( des+alanead! , -2
v!id re+alaneamen$!EsqDir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ sinal di4eren$e r!$a%&!
dupla !m pai para esquerda e "l#! para direi$aAp!n$ad!r pv , pu-Dir3
prin$45r!$aa! dupla esquerda-direi$a !m 6ld7n5/ pv-Re).'#ave3
pu-Dir , pv-Esq3 pv-Esq , pu3
p-Esq , pv-Dir3 pv-Dir , p3
i4 pv-+alaneamen$! ,, -1 p-+alaneamen$! , 13
else p-+alaneamen$! , 03
i4 pv-+alaneamen$! ,, 1 pu-+alaneamen$! , -13
else pu-+alaneamen$! , 03p , pv3
8
p-+alaneamen$! , 03
# , 03
pu
pv
p 6
51
-2
0
** n( des+alanead! 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
20/34
** n( des+alanead! , -2
v!id re+alaneamen$!EsqDir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ sinal di4eren$e r!$a%&!
dupla !m pai para esquerda e "l#! para direi$aAp!n$ad!r pv , pu-Dir3
prin$45r!$aa! dupla esquerda-direi$a !m 6ld7n5/ pv-Re).'#ave3
pu-Dir , pv-Esq3 pv-Esq , pu3 **direi$a de pu ap!n$a para null e pu
se $!rna "l#! esquerd! de pvp-Esq , pv-Dir3 pv-Dir , p3
i4 pv-+alaneamen$! ,, -1 p-+alaneamen$! , 13
else p-+alaneamen$! , 03
i4 pv-+alaneamen$! ,, 1 pu-+alaneamen$! , -13
else pu-+alaneamen$! , 03
p , pv3
8
p-+alaneamen$! , 03
# , 03
pv
pu
p 6
0
-2
51
** n( des+alanead! , 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
21/34
** n( des+alanead! , -2
v!id re+alaneamen$!EsqDir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Dir3
prin$45r!$aa! dupla esquerda-direi$a !m 6ld7n5/ pv-Re).'#ave3
pu-Dir , pv-Esq3 pv-Esq , pu3 **direi$a de pu ap!n$a para null e pu se$!rna "l#! esquerd! de pv
p-Esq , pv-Dir3 pv-Dir , p3 **esquerda de p ap!n$a para null e p se$!rna "l#! direi$! de pv
i4 pv-+alaneamen$! ,, -1 p-+alaneamen$! , 13
else p-+alaneamen$! , 03
i4 pv-+alaneamen$! ,, 1 pu-+alaneamen$! , -13
else pu-+alaneamen$! , 03p , pv3
8
p-+alaneamen$! , 03
# , 03
}
pv
pu p 6
0
-2
51
** n( des+alanead! , 2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
22/34
** n( des+alanead! , -2
v!id re+alaneamen$!EsqDir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Dir3
prin$45r!$aa! dupla esquerda-direi$a !m 6ld7n5/ pv-Re).'#ave3
pu-Dir , pv-Esq3 pv-Esq , pu3 **direi$a de pu ap!n$a para null e pu se$!rna "l#! esquerd! de pv
p-Esq , pv-Dir3 pv-Dir , p3 **esquerda de p ap!n$a para null e p se$!rna "l#! direi$! de pv
i4 pv-+alaneamen$! ,, -1 p-+alaneamen$! , 13
else p-+alaneamen$! , 03 **a$uali9a :; de p
i4 pv-+alaneamen$! ,, 1 pu-+alaneamen$! , -13
else pu-+alaneamen$! , 03p , pv3
8
p-+alaneamen$! , 03
# , 03
}
pv
pu p 6
0
0
51
** n( des+alanead! , -2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
23/34
** n( des+alanead! , -2
v!id re+alaneamen$!EsqDir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Dir3
prin$45r!$aa! dupla esquerda-direi$a !m 6ld7n5/ pv-Re).'#ave3
pu-Dir , pv-Esq3 pv-Esq , pu3 **direi$a de pu ap!n$a para null e pu se$!rna "l#! esquerd! de pv
p-Esq , pv-Dir3 pv-Dir , p3 **esquerda de p ap!n$a para null e p se$!rna "l#! direi$! de pv
i4 pv-+alaneamen$! ,, -1 p-+alaneamen$! , 13
else p-+alaneamen$! , 03 **a$uali9a :; de p
i4 pv-+alaneamen$! ,, 1 pu-+alaneamen$! , -13
else pu-+alaneamen$! , 03 **a$uali9a :; de pp , pv3
8
p-+alaneamen$! , 03
# , 03
}
pv
pu p 6
0
0
50
** n( des+alanead! , -2
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
24/34
** n( des+alanead! , -2
v!id re+alaneamen$!EsqDir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, 1 **n( "l#! , 1/ sinal di4eren$e r!$a%&! dupla!m pai para esquerda e "l#! para direi$a
Ap!n$ad!r pv , pu-Dir3
prin$45r!$aa! dupla esquerda-direi$a !m 6ld7n5/ pv-Re).'#ave3
pu-Dir , pv-Esq3 pv-Esq , pu3 **direi$a de pu ap!n$a para null e pu se$!rna "l#! esquerd! de pv
p-Esq , pv-Dir3 pv-Dir , p3 **esquerda de p ap!n$a para null e p se$!rna "l#! direi$! de pv
i4 pv-+alaneamen$! ,, -1 p-+alaneamen$! , 13
else p-+alaneamen$! , 03 **a$uali9a :; de p
i4 pv-+alaneamen$! ,, 1 pu-+alaneamen$! , -13
else pu-+alaneamen$! , 03 **a$uali9a :; de pp , pv3 **pv a)!ra < p
8
p-+alaneamen$! , 03 **a$uali9a :; de p
# , 03
}
p
6
0
0
50
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
25/34
/escri%0o das rota%+es
Diferena dealtura de um
n
Diferena de altura don lho do n
desbalanceado
Tipo de rotao
2
1 Simples esquerda
0 Simples esquerda
-1Dupla !m "l#! paraa direi$a e pai para aesquerda
-2 1Dupla !m "l#! paraa esquerda e pai paraa direi$a
0 Simples direi$a
-1 Simples direi$a
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
26/34
&em"los de alanceamentoR!$a%&! simples direi$a
3
6
0
-1
rvore Balanceada rvoreDesbalanceada
+ 2 3
6
-1
-2
20
rvoreBalanceada
0
3
60
2
0
R!$a%&! simplespara a direi$a
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
27/34
'(di)! em '
** n( des+alanead! , -2
v!id re+alaneamen$!Dir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ mesm! sinal r!$a%&!
simples a direi$aprin$45r!$aa! a direi$a !m 6ld7n5/ pu-Re).'#ave3
p-Esq , pu-Dir3
pu-Dir , p3
p-+alaneamen$! , 03p , pu3
8
p-+alaneamen$! , 03
# , 03
}
pu
p 3
6-1
-2
20
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
28/34
'(di)! em '
** n( des+alanead! , -2
v!id re+alaneamen$!Dir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ mesm! sinal r!$a%&!
simples a direi$aprin$45r!$aa! a direi$a !m 6ld7n5/ pu-Re).'#ave3
p-Esq , pu-Dir3 **esquerda de p ap!n$a para null
pu-Dir , p3 **p passa a ser "l#! direi$! de pu
p-+alaneamen$! , 03p , pu3
8
p-+alaneamen$! , 03
# , 03
}
pu
p 3
6-1
-2
2
0
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
29/34
'(di)! em '
** n( des+alanead! , -2
v!id re+alaneamen$!Dir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ mesm! sinal r!$a%&!
simples a direi$aprin$45r!$aa! a direi$a !m 6ld7n5/ pu-Re).'#ave3
p-Esq , pu-Dir3 **esquerda de p ap!n$a para null
pu-Dir , p3 **p passa a ser "l#! direi$! de pu
p-+alaneamen$! , 03 **a$uali9a :; de pp , pu3
8
p-+alaneamen$! , 03
# , 03
}
pu
p 3
6-1
0
2
0
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
30/34
'(di)! em '
** n( des+alanead! , -2
v!id re+alaneamen$!Dir Ap!n$ad!r p/ in$ #
Ap!n$ad!r pu , p-Esq3 **passand! para "l#! d! n( des+alanead!
i4 pu-+alaneamen$! ,, -1 **n( "l#! , -1/ mesm! sinal r!$a%&!
simples a direi$aprin$45r!$aa! a direi$a !m 6ld7n5/ pu-Re).'#ave3
p-Esq , pu-Dir3 **esquerda de p ap!n$a para null
pu-Dir , p3 **p passa a ser "l#! direi$! de pu
p-+alaneamen$! , 03**a$uali9a :; de p
p , pu3 **pu a)!ra < p
8
p-+alaneamen$! , 03 **a$uali9a :; de p
# , 03
}
p
3
60
0
2
0
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
31/34
E=eri! 1
'!nsidere a inser%&! d!s se)uin$es val!resnes$a !rdem em uma >rv!re AVL?@//B/2/C//10/1//F/11. Gara essas inser%Hes
nen#uma r!$a%&! < neess>ria. Desen#e a>rv!re AVL resul$an$e e de$ermine ! 4a$!r de+alaneamen$! de ada n(.
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
32/34
E=eri! 2
De$erminad! sis$ema arma9ena re)is$r!s p!r#aves numrv!re AVL.Nessa >rv!re s&! inserid!s !s se)uin$es
val!res? 20/10/@/0/2@/2 e 2B nessa!rdem.
Apresen$e pass! a pass! !m! a >rv!re vaisend! !ns$ruda. Reali9e as r!$a%Hesneess>rias e indique qual r!$a%&! 4!ireali9ada em ada as!.
7/23/2019 Estrutura de dados algoritmos, anlise da complexidade e implementaes em Java e CC++
33/34
Res!lvend! ! E=eri! 2
1 Inser%&! das #aves 20 e 10/ nessa !rdem A >rv!re "!u pendend! para a esquerda O 4a$!r de +alaneamen$! d! n( uJa #ave