if969 - Árvores AVL

Preview:

Citation preview

8/3/2019 if969 - Árvores AVL

http://slidepdf.com/reader/full/if969-arvores-avl 1/39

ÁrvoresAVL

CentrodeInformá-ca

UniversidadeFederaldePernambuco

SistemasdeInformação

ViniciusCardosoGarcia

vcg@cin.ufpe.br

©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

Recommended