Você está na página 1de 23

Universidade Federal de Mato Grosso

Estrutura de Dados II
Curso de Cincia da Computao
Prof. Thiago P. da Silva
thiagosilva@ufmt.br

Agenda

Definies

ator de !alanceamento

"strutura de um #$

%peraes

&nsero

'emoo

!usca

'otaes

'otao ( es)uerda

'otao ( direita

'otao dupla ( es)uerda

'otao dupla ( direita



rvore Binria - Definio

Grafo acclico, conexo, dirigido e que cada n no tem grau


maior que dois

No existe mais do que um caminho entre dois ns distintos

Uma rvore binria uma estrutura de dados caracterizada or!

"u no tem elemento algum #rvore vazia$

"u tem um elemento distinto, denominado raiz, com dois


onteiros ara duas estruturas diferentes, denominadas
subrvore esquerda #sae$ e subrvore direita #sad$

rvore Binria - Definio

%efini&'es!

PROFUNDIDADE ( dist)ncia de um n at a raiz

NVEL * con+unto de ns com a mesma rofundidade

ALTURA * maior rofundidade da rvore

NS ( so todos os itens guardados na rvore

RAIZ ( o n do too da rvore

FILHOS ( so os ns que vem deois dos outros ns

PAIS ( so os ns que vem antes dos ns filhos

FOLHAS ( so os ns que no t,m filhos- so os .ltimos ns


da rvore

rvore AVL - Definio

Uma rvore /01 uma rvore balanceada cu+a diferen&a em


altura entre a subrvore esquerda #SAE$ e a subrvore direita
#SAD$ #em qualquer n$ deve ser, no mximo, de um nvel2

Numa rvore /01, cada chave .nica e as oera&'es de


inser&o3 remo&o tentam manter o equilbr4o da rvore2

Definio Uma rvore binria vazia semre balanceada or


altura2 5e T no vazia e Tes! e Tdir so sub(rvores da
esquerda e direita, ento T balanceada or altura se!

62 Tes! e Tdir so balanceadas or altura-

72 He"Hd # $%, sendo Hd e He a altura de Tes! e Tdir,


resectivamente2

rvore AVL - Definio

8m cada n, existe um camo adicional que indica a situa&o de


equilbrio desse n, chamado de fa&or de 'a(an)ea*en&o
+F,-!

9 ! equilibrada-

6 ! sub(rvore esquerda tem mais um nvel que a da direita-

(6 ! sub(rvore direita tem mais um nvel que a da esquerda



rvore AVL Estrutura de u! "#

"ovos atri$utos%

FB* arma+ena o fator de balanceamento da)uele n$ dentro da (rvore


,-..

&ai* guarda a referncia para o n$ pai. #o caso da rai+ da (rvore/ o


pai 0 igual a null.
t'(edef stru)t no1,-. ,-.2
stru)t no1,-. 3
int info2
int fb2 44 fator de balanceamento
,-. 5pai2
,-. 5es)2
,-. 5dir2
62

rvore AVL *al)ulando a Altura de u! "#
int altura7,rvore t8
3
int alt"/ altD*
,-. 5)/ 5temp2
if 7t 99 #:..8
return ;<2
else
3
alt" 9 altura7t;=es)82
altD 9 altura7t;=dir82
if 7alt" > altD8
return altD ? <2
else
return alt" ? <2
6
6

rvore AVL +ota,es

+otao du(la - es.uerda

'otao simples @ direita

'otao simples @ es)uerda


void rotacao1dupla1es)uerda7,-. 5p8
3
rotacao1direita75p82
rotacao1es)uerda75p82
6

rvore AVL /(era,es

Insero

&nsero em uma (rvore ,-. deve ser dada pela insero do


nodo seguida de uma verificao na propriedade do fator
de balanceamento. Caso no obedea a essa propriedade/
deve;se fa+er uma rotao conveniente.

+e!oo

, remoo deve ser dada por uma rotao em torno do n a


ser removido/ a fim de torn(;lo folha para )ue ento possa ser
removido. "m alguns casos/ ap$s a remoo so necess(rias
rotaes para aAustar o fator de balanceamento.

&es.uisa

% nBmero de comparaes para locali+ar um elemento em ,-.


0 aproCimadamente 1.44 log2 n no pior caso.

rvore AVL /(era,es

&nsero e remoo so operaes )ue podem desbalancear a


(rvore ,-..

Considere uma (rvore 0 )ual)uer com rai+ r e sub(rvores


es)uerda E e direita D/ e supondo )ue a insero deve ser feita na
sub(rvore da es)uerda. Podemos distriguir D casos*

<. Se 1e 2 1r/ ento E e D ficam com alturas diferentes mas


continuam balanceadas.

E. Se 1e 3 1d/ ento E e D ficam com alturas iguais e


balanceamento foi melhorado.

D. Se 1e 4 1d/ ento E fica ainda maior e balanceamento foi


violado.

rvore AVL /(era,es

"Cemplo*

#$s 5 ou 66 podem ser inseridos sem balanaceamento. Sub(rvore


com rai+ 67 passa a ter uma sub(rvore e sub(rvore com rai+ 8 vai
ficar melhor balanceadaF

&nsero dos n$s 9/ : ou ; re)uerem )ue a (rvore seAa


rebalanceadaF

rvore AVL Insero na rvore

Para inserir um n$ < em uma (rvore ,-./ basta seguirmos os


seguintes passos*

7<8 &nserir < na (rvore ,-. usando o mesmo algoritmo de insero de


um n$ em uma (rvore de busca bin(ria. 'ecursivamente/ empilhar
cada n$ )ue 0 visitado a partir do n$ rai+ at0 </ eCceto o pr$prio <2

7E8 -erificar se a pilha est( va+ia*

Se sim/ o algoritmo termina.

Seno/ v( para o passo 7D8.

7D8 Desempilhar um n$ e verificar se a diferena de altura entre a


sub;(rvore da es)uerda e da direita desse n$ 0 maior )ue <.

Se sim/ v( para o passo 7E8.

Seno/ voc precisar( rotacionar os n$s. Depois de


reali+ada a rotao/ o algoritmo termina.

rvore AVL Insero na rvore

"Cemplos*

<G/ EG/ DG

DG/ EG/ <G

Faa! o desen=o destas rvores>



rvore AVL Insero na rvore

"Cemplos*

<G/ EG/ DG

DG/ EG/ <G

%bservaes*

Huando os sinais dos fatores de balanceamento dos


antecessores forem iguais/ ento a rotao 0 simples

Se forem negativos 7-8/ ento ser( uma rotao - es.uerda

Se forem positivo 7?8/ ento ser( uma rotao - direita



rvore AVL +ota,es

+otao - es.uerda

I"mpurrar o n# para baiCo e para es)uerda. % filho @ direita do


n# o substitui/ e o filho @ es)uerda do filho @ direita vem a ser o
novo filho @ direita do n#I.

SeAa J o filho @ direita de K

Torne o filho @ es)uerda de J o filho @ direita de K.

Torne K filho @ es)uerda de J


void rotacao1es)uerda7,-. 5p8
3
,-. 5L/ 5temp2
L 9 p;=dir2
temp 9 L;=es)2
L;=es) 9 p2
p;=dir 9 temp2
6

rvore AVL +ota,es

+otao si!(les - es.uerda%

<G/ EG/ DG

SeAa J o filho @ direita de K

Torne o filho @ es)uerda de J o filho @ direita de K.

Torne K filho @ es)uerda de J


<G
EG
DG
<G
EG
DG

rvore AVL +ota,es

+otao - direita

I"mpurrar o n# para baiCo e para a direita. % filho @ es)uerda


do n# o substitui/ e o filho @ direita do filho @ es)uerda vem a
ser o novo filho @ es)uerda do n#.

SeAa J o filho @ es)uerda de K

Torne o filho @ direita de J o filho @ es)uerda de K.

Torne K o filho @ direita de J


void rotacao1direita7,-. 5p8
3
,-. 5)/ 5temp2
) 9 p;=es)2
temp 9 );=dir2
);=dir 9 p2
p;=es) 9 temp2
6

rvore AVL +ota,es

+otao si!(les - direita%

DG/ EG/ <G



SeAa J o filho @ es)uerda de K

Torne o filho @ direita de J o filho @ es)uerda de K.

Torne K o filho @ direita de J


DG
EG
<G
<G
EG
DG

rvore AVL +ota,es

" para os casos em )ue os sinais dos fatores de balanceamento


dos antecessores forem diferentesM

"Cemplo*

<G/ DG/ EG
<G
DG
EG

rvore AVL +ota,es

" para os casos em )ue os sinais dos fatores de balanceamento


dos antecessores forem diferentesM

"Cemplo*

<G/ DG/ EG

A(li)a!os rota,es du(las


<G
DG
EG

rvore AVL +ota,es

+otao du(la - es.uerda

'otao simples @ direita

'otao simples @ es)uerda


void rotacao1dupla1es)uerda7,-. 5p8
3
rotacao1direita7p82
rotacao1es)uerda7p82
6

rvore AVL +ota,es

+otao du(la - es.uerda

"Cemplo*

<G/ DG/ EG
<G
DG
EG
<G
EG
DG
<G
EG
DG

Você também pode gostar