39
ÁrvoresAVL CentrodeInformá-ca UniversidadeFederaldePernambuco SistemasdeInformação ViniciusCardosoGarcia [email protected] ©2011ViniciusCardosoGarcia

if969 - Árvores AVL

Embed Size (px)

Citation preview

Page 1: if969 - Árvores AVL

8/3/2019 if969 - Árvores AVL

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

ÁrvoresAVL

CentrodeInformá-ca

UniversidadeFederaldePernambuco

SistemasdeInformação

ViniciusCardosoGarcia

[email protected]

©2011–ViniciusCardosoGarcia

Page 2: if969 - Árvores AVL

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

Page 3: if969 - Árvores AVL

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

Page 4: if969 - Árvores AVL

8/3/2019 if969 - Árvores AVL

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

Page 5: if969 - Árvores AVL

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

Page 6: if969 - Árvores AVL

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

Page 7: if969 - Árvores AVL

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

Page 8: if969 - Árvores AVL

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

Page 9: if969 - Árvores AVL

8/3/2019 if969 - Árvores AVL

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

Page 10: if969 - Árvores AVL

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:

Page 11: if969 - Árvores AVL

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

Page 12: if969 - Árvores AVL

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

Page 13: if969 - Árvores AVL

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

Page 14: if969 - Árvores AVL

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

Page 15: if969 - Árvores AVL

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

Page 16: if969 - Árvores AVL

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

Page 17: if969 - Árvores AVL

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

Page 18: if969 - Árvores AVL

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

Page 19: if969 - Árvores AVL

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

Page 20: if969 - Árvores AVL

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

Page 21: if969 - Árvores AVL

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

Page 22: if969 - Árvores AVL

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

Page 23: if969 - Árvores AVL

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

Page 24: if969 - Árvores AVL

8/3/2019 if969 - Árvores AVL

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

Page 25: if969 - Árvores AVL

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

Page 26: if969 - Árvores AVL

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

Page 27: if969 - Árvores AVL

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

Page 28: if969 - Árvores AVL

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

Page 29: if969 - Árvores AVL

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

Page 30: if969 - Árvores AVL

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

Page 31: if969 - Árvores AVL

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

Page 32: if969 - Árvores AVL

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

Page 33: if969 - Árvores AVL

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

Page 34: if969 - Árvores AVL

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

Page 35: if969 - Árvores AVL

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

Page 36: if969 - Árvores AVL

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

Page 37: if969 - Árvores AVL

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

Page 38: if969 - Árvores AVL

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

Page 39: if969 - Árvores AVL

8/3/2019 if969 - Árvores AVL

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

AYvidadescomplementares

•  Leituradocapítulo12dolivrodoCormen

•  ImplementarosalgoritmosdeÁrvoreAVL

AlgoritmoseEstruturadeDados

Á AVL 39