Sei sulla pagina 1di 4

1

Re-balanceamento de rvore - AVL


rvore AVL: Em 1962 os matemticos Russos G. M. Adelson-Velskki e E. M. Landis sugeriram uma defini !o "ara #near $alance% e descre&eram "rocedimentos "ara inser !o e elimina !o de n's nessas r&ores( os algoritmos de $alanceamento de r&ores s!o c)amados de algoritmos AVL e as r&ores s!o c)amadas de rvores AVL. *ma r&ore AVL + uma r&ore $inria de $usca ,A--. constru/da de tal modo 0ue a altura de sua su$r&ore direita difere da altura da su$r&ore es0uerda de no m1imo 1. Insero AVL: 2 0ue "ode acontecer 0uando um no&o n' + inserido numa r&ore $alanceada3 4ada uma rai5 r com su$r&ores L ,left. e R ,rigt).6 e su"ondo 0ue a inser !o de&e ser feita na su$r&ore da es0uerda. 7odemos distinguir 8 casos( 1. 9e )L : )R6 ent!o L e R ficam com alturas diferentes mas continuam $alanceadas. 2. 9e )L ; )R6 ent!o L e R ficam com alturas iguais e o $alanceamento foi mel)orado. 8. 9e )L < )R6 ent!o L fia ainda maior e o $alancemanto foi &iolado. =a r&ore a$ai1o(
8

10

='s 9 ou 11 "odem ser inseridos sem re-$alanceamento. 2 n' 1> "assa a ter uma su$r&ore e a su$r&ore com rai5 ? &ai ficar mel)or $alanceada@ Anser !o dos n's 86 B ou C re0uerem 0ue a r&ore seDa re-$alanceada@

Fator de balanceamento (FB) de m n! na AVL E a altura da su$r&ore direita do n' menos a altura da su$r&ore es0uerda do n'. Re-balancemanto: 2s "ro$lemas "odem ser ma"eados "ara dois casos(

2 "i#o $: o n' rai5 de uma su$r&ore tem FB % (o &%) e tem um fil)o com FB $ (-$) o 0ual tem o mesmo sinal 0ue o F- do n' "ai. E1em"los( E1em"lo 1(
8

10

15

12

inserir 12

E1em"lo 2(
8

10

inserir 8

solu !o( rota !o sim"les so$re o n' de F- : 2 ,-2.. rota Ges s!o feitas H es0uerda 0uando F- "ositi&o e H direita 0uando F- negati&o.

Algoritmo #ara rotao ' direita sobre o n! #


procedure rotacao_direita(var p:tree); var q,temp:tree; begin q:=p^.esq; temp:=q^.dir; q^.dir:=p; p^.esq:=temp; p:=q; end;

8 Algoritmo #ara rotao ' es( erda sobre o n! #


procedure rotacao_esquerda(var p:tree); var q,temp:tree; begin q:=p^.dir; temp:=q^.esq; q^.esq:=p; p^.dir:=temp; p:=q; end;

"i#o %( o n' rai5 de uma su$r&ore tem F- : 2 ,ou I2. e tem um fil)o com F- : -1 ,1. o 0ual tem o sinal o"osto ao F- do n' "ai. E1em"lo( Jaso ,-2. ,1. F- do n' 0ue cont+m ?( -2 F- do n' 0ue cont+m K(1
8

10

inserir B

solu !o( duas rota Ges. 1. "rimeiro roda-se o n' com F- : 1 ,-1. na dire !o a"ro"riada. 2. de"ois roda-se o n' 0ue tin)a F- : -2 ,2. na dire !o o"osta. Rotao de ) ' es( erda*
8

10

K Rotao de + ' direita*


6

10

Ela$orar um caso ,2. ,-1. e e1ecutar o re-$alanceamento. Jomo seria uma inser !o fa5endo na r&ore fa5endo a cada inser !o um re$alanceamento ,se necessrio.3

Potrebbero piacerti anche