arquitetura de computadores - marcio buenoestrutura de dados ii - márcio bueno 5 introdução...

60
Algoritmos e Estrutura de Dados II Árvore AVL Prof Márcio Bueno [email protected] / [email protected] Material da Prof a Ana Eliza

Upload: others

Post on 03-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Algoritmos e Estrutura de Dados II

Árvore AVL

Prof Márcio [email protected] / [email protected]

Material da Profa Ana Eliza

Page 2: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 2

• Árvores Binárias de Busca– Objetivo da Utilização

• Minimizar o número de comparaçõesefetuadas, no pior caso, para uma buscacom chaves de probabilidades deocorrência idênticas.

– Restrições• Aplicações estáticas Ideal

• Aplicações dinâmicas Desaconselhável

Introdução

Page 3: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 3

Introdução

• Árvores Binárias de Busca– Problema

• Sucessivas inserções e remoções de nósem uma ABB fazem com que existamdiferenças sensíveis entre os níveis dassuas folhas, o que acarreta grandesdiferenças de desempenho no acesso àsinformações.

• Pior caso: Árvores assimétricas.

Page 4: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 4

8

4

2

1

Introdução

• Árvores Binárias de Busca– Problema

• Pior caso: Árvores assimétricas (semelhante a uma lista linear).

Page 5: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 5

Introdução

• Árvores Binárias de Busca– Alternativa

• Tornar a árvore novamente completa, tãologo tal característica seja perdida apósuma inserção ou remoção.

– Problema• Alto custo de reestruturação da árvore.

• Solução pouco eficiente e, às vezes, impossível.

Page 6: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 6

Introdução

• Árvores Binárias de Busca Completa

– Inserir 0

8

4

1

2

3 5

6

7

12

9

10

11 13

14

Page 7: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 7

Introdução

• Árvores Binárias de Busca Completa

– Não é mais completa!

0

8

4

1

2

3 5

6

7

12

9

10

11 13

14

Page 8: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 8

Introdução

• Árvores Binárias de Busca Completa (e Cheia)

7

3

0

1

2 4

5

6

11

8

9

10 12

13

14

Page 9: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 9

Árvores Balanceadas

• Definição (Rigorosa)

– Uma árvore é dita balanceada quando,para qualquer nó, as suas subárvores àesquerda e à direita possuem a mesmaaltura.

– Isso equivale a dizer que todas as suasfolhas estão no mesmo nível.

– Ou seja, que a árvore está cheia.

Page 10: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 10

Árvores Balanceadas

• Definição (Menos Rigorosa)

– Uma árvore é considerada balanceadaquando, para cada nó n, as alturas dassubárvores à esquerda e à direitadiferem, no máximo, de um.

– Essa diferença é chamada de “fatorde balanceamento” do nó n

• FatBal (n)

Page 11: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 11

Árvores Balanceadas

• Definição (Menos Rigorosa)

– Conceito introduzido em 1962 pelosmatemáticos russos Adelson-Velskii eLandis.

– Conhecidas como árvores AVL.

Page 12: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 12

Árvores AVL

• Características Básicas– O fator de balanceamento deve constar em

cada nó de uma árvore AVL.

• FatBal(n) = Negativo subárvore à esquerda mais alta.

• FatBal(n) = Positivo subárvore à direita mais alta.

• FatBal(n) = Zero subárvores à esquerda e à direita com mesma altura.

Page 13: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 13

Árvores AVL

• Exemplos de árvores balanceadas

25

10

20

30

28

0

+1 -1

0 0

25

10

5 20

30

28

0

0 -1

0 00

Page 14: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 14

Árvores AVL

• Exemplos de árvores não balanceadas

10

5 20

30

+2

0 +2

0

25

-1

25

10

5 20

0

0 0

30

28

27

-2

-1

0

+1

Page 15: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 15

Árvores AVL

• Operações Críticas– Inserção

– Remoção

Page 16: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 16

Inserção em Árvores AVL

• Sempre ocorre nas folhas;

• Pode ocasionar:

– O aumento da altura da subárvore onde o nó foi inserido;

– A alteração dos fatores de balanceamento dos nós daquela subárvore.

Page 17: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 17

Inserção em Árvores AVL

• Algoritmo de Inserção

– Efetuar a inserção;

– Ajustar os fatores de balanceamento;

– Verificar a quebra do equilíbrio;

– Se a árvore não estiver balanceada,corrigir a estrutura através demovimentações dos nós (Rotações).

Page 18: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 18

Inserção em Árvores AVL• Rotação

– Tipos de Rotação• Simples• Dupla

– Principais nós envolvidos:• Nó A: Nó ancestral mais próximo do nó

inserido que possuía fator debalanceamento diferente de zero antes dainserção.

• Nó B: Filho de A na subárvore ondeocorreu a inserção.

Page 19: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 19

Inserção em Árvores AVL

• Rotação Simples– Utilizada quando a inserção ocorre do “lado

de fora”.

– Dado um nó A, podemos ter:

• Caso 1: Inserção na subárvore à esquerda do filho à esquerda de A Rotação simples à direita.

• Caso 2: Inserção na subárvore à direita do filho à direita de A Rotação simples à esquerda

Page 20: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 20

Inserção em Árvores AVL

• Rotação Simples à Direita

B

A

T2 T3T1

A

B

T2

T3

T1

OBS: O nó foi inserido na subárvore T1

Page 21: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 21

Inserção em Árvores AVL

• Rotação Simples à Direita – Exemplo:

25

10

5 20

30

28

0

0 -1

0 00B

25

10

5 20

0

0 0

30

28

27

A-2

-1

0

+1

Page 22: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 22

Inserção em Árvores AVL

• Rotação Simples à Direita – Exemplo:

B

25

10

5 20

0

0 0

30

28

27

A-2

-1

0

+1

25

10

5 20

0

0 0

28

27 30

0

0

00

ANTES DEPOIS

Page 23: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 23

Inserção em Árvores AVL

• Rotação Simples à Esquerda

OBS: O nó foi inserido na subárvore T3

A

BT1

T2

T3

B

T1

A

T2T3

Page 24: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 24

Inserção em Árvores AVL

• Rotação Simples à Esquerda – Exemplo:

25

10

20

30

28

0

+1 -1

0 0 B

25

10

20

+2

+1

30

28

22

A

-1

-1

0

0

Page 25: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 25

Inserção em Árvores AVL

• Rotação Simples à Esquerda – Exemplo:

25

20

22

30

28

0

0 -1

0 0100

B

25

10

20

+2

+1

30

28

22

A

-1

-1

0

0

ANTES DEPOIS

Page 26: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 26

Inserção em Árvores AVL

• Rotação Dupla– Utilizada quando a inserção ocorre do “lado

de dentro” .

– Dado um nó A, podemos ter:

• Caso 3: Inserção na subárvore à direita do filho à esquerda de A Rotação dupla à direita.

• Caso 4: Inserção na subárvore à esquerda do filho à direita de A Rotação dupla à esquerda.

Page 27: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 27

Inserção em Árvores AVL

• Rotação Dupla

– Principais nós envolvidos:• Nó A: Nó ancestral mais próximo do nó

inserido que possuía fator debalanceamento diferente de zero antesda inserção.

• Nó B: Filho de A na subárvore ondeocorreu a inserção.

• Nó C: Filho de B na subárvore ondeocorreu a inserção.

Page 28: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 28

Inserção em Árvores AVL

• Rotação Dupla à Direita

OBS: O nó foi inserido na subárvore de raiz C (T2 ou T3)

A

B

T1

T2 T3

C

T4

C

T1

A

T3 T4

B

T2

Page 29: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 29

Inserção em Árvores AVL

• Rotação Dupla à Direita - Exemplo

25

10

5 20

30

27

0

0 -1

0 0 0

25

10

5 20

30

27

+1

0 -2

0 0 +1

28

A

B

0

Page 30: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 30

Inserção em Árvores AVL

• Rotação Dupla à Direita - Exemplo

25

10

5 20

30

27

+1

0 -2

0 0 +1

28

A

B

0

0

0 0

0 0 0 0

25

10

5 20

28

27 30

Page 31: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 31

Inserção em Árvores AVL• Rotação Dupla à Direita – Observações

– Uma rotação dupla à direita é equivalente à:1) Uma rotação simples à esquerda;

2) Uma rotação simples à direita.

25

10

5 20

30

27

+1

0 -2

0 0 +1

28

A

B

0

0

0 0

0 0 0 0

25

10

5 20

28

27 30

(1)

(2)

ANTES DEPOIS

Page 32: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 32

Inserção em Árvores AVL

• Rotação Dupla à Esquerda

OBS: O nó foi inserido na subárvore de raiz C (T2 ou T3)

A

BT1

T2 T3

CT4

C

T1

A

T2 T3

B

T4

Page 33: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 33

Inserção em Árvores AVL

• Rotação Dupla à Esquerda - Exemplo

10

5 20

30

+1

0 +1

0

10

5 20

30

+2

0 +2

0

25

-1

A

B

Page 34: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 34

Inserção em Árvores AVL

• Rotação Dupla à Esquerda - Exemplo

10

5 20

30

+2

0 +2

0

25

-1

A

B

10

5 25

30

+1

0 0

0

200

ANTES DEPOIS

Page 35: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

35

Inserção em Árvores AVL• Rotação Dupla à Esquerda – Observações

– Uma rotação dupla à esquerda é equivalente à:1) Uma rotação simples à direita;

2) Uma rotação simples à esquerda.

10

5 25

30

+1

0 0

0

200

10

5 20

30

+2

0 +2

0

25

-1

A

B

(1)

(2)

Estrutura de Dados II - Márcio Bueno

Page 36: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 36

• Estrutura do nó de uma árvore AVLstruct avlNo{

int info;

avlNo *esq;

avlNo *dir;

int fatBal;

};

//Declaradas dentro do mainavlNo * raiz = NULL;

bool status = false;

Implementação de Árvores AVL

Page 37: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 37

Implementação de Árvores AVL

• Criação de um nó

void createNode (avlNo * &raiz, int elem)

{

raiz = new avlNo;

raiz->info = elem;

raiz->esq = NULL;

raiz->dir = NULL;

raiz->fatBal = 0;

}

Page 38: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

38

void insereAvl (avlNo * &raiz, int elem, bool &status) {if (raiz == NULL) {

createNode(raiz,elem);status = true;

}else if (elem == raiz->info){printf ("Elemento repetido. \n");return;

}else if (elem < raiz->info){insereAvl(raiz->esq,elem,status);if (status == true)

switch (raiz->fatBal) { case 1 : raiz->fatBal = 0; status = false; break;case 0 : raiz->fatBal = -1; break;case -1 : rotacionarDir(raiz,status); break;

}} else {

insereAvl(raiz->dir,elem,status);if (status == true)

switch (raiz->fatBal) { case -1 : raiz->fatBal = 0; status = false; break;case 0 : raiz->fatBal = 1; break;case 1 : rotacionarEsq(raiz,status); break;

}}

}

Estrutura de Dados II - Márcio Bueno

Page 39: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

39

void rotacionarDir (avlNo * &a, bool &status) {avlNo *b, *c;b = a->esq;if (b->fatBal == -1) { // rotação simples

a->esq = b->dir;b->dir = a;a->fatBal = 0;a = b;

}else { // rotação dupla

c = b->dir;b->dir = c->esq;c->esq = b;a->esq = c->dir;c->dir = a; if (c->fatBal == -1)

a->fatBal = 1;else a->fatBal = 0;if (c->fatBal == 1)

b->fatBal = -1;else b->fatBal = 0;a = c;

}a->fatBal = 0;status = false;

}Estrutura de Dados II - Márcio Bueno

Page 40: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

40

void rotacionarEsq (avlNo * &a, bool &status) {avlNo *b, *c;b = a->dir;if (b->fatBal == 1) { // rotação simples

a->dir = b->esq;b->esq = a;a->fatBal = 0;a = b;

}else { // rotação dupla

c = b->esq;b->esq = c->dir;c->dir = b;a->dir = c->esq;c->esq = a; if (c->fatBal == 1)

a->fatBal = -1;else a->fatBal = 0;if (c->fatBal == -1)

b->fatBal = 1;else b->fatBal = 0;a = c;

}a->fatBal = 0;status = false;

}Estrutura de Dados II - Márcio Bueno

Page 41: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Remoção em Árvore AVL

Parte II

Page 42: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 42

Remoção em Árvores AVL

• Considere que o elemento a ser removido encontra-se na raiz de uma árvore T:

1) A raiz não possui filhos: remover a raiz e anular T;

2) A raiz possui um único filho: remover a raiz e substituí-la por seu filho;

3) A raiz possui dois filhos: escolher o nó que armazena o menor elemento na subárvore direita e substituir a raiz por ele.

Page 43: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 43

Remoção em Árvores AVL

• Pode ocasionar:

– A diminuição da altura da árvore, e/ou;

– A alteração dos fatores de balanceamento de seus nós.

Page 44: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 44

Remoção em Árvores AVL

• Algoritmo de Remoção

– Efetuar a remoção;

– Ajustar os fatores de balanceamento;

– Verificar a quebra do equilíbrio;

– Se a árvore não estiver balanceada,corrigir a estrutura através demovimentações dos nós (Rotações).

Page 45: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 45

Remoção em Árvores AVL• Rotação

– Tipos de Rotação• Simples• Dupla

– Principais nós envolvidos:• Nó A: Nó ancestral mais próximo do ponto de

remoção que possuía fator de balanceamentodiferente de zero antes da remoção serefetuada.

• Nó B: Filho de A na subárvore de maior altura.• Nó C: Filho de B na subárvore de maior altura

(utilizado apenas em rotações duplas).

Page 46: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 46

Remoção em Árvores AVL

• Exemplo:

5

3

1

2 4

8

6

7

119

10

0

-1 0

-1

0 00

0

0

0

-1

Remover 4

Page 47: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 47

Rebalancear Rotação Simples à Direita

Remoção em Árvores AVL

• Exemplo:5

3

1

2

8

6

7

119

10

0

-1

-2

0 00

0

0

0

-1

A

B

5

2

31

8

6

7

119

100

0

0 00

0

0

+1

-10

Page 48: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 48

5

2

31

8

6

7

119

100

0

0 00

0

0

+1

-10

Remover 6

Remoção em Árvores AVL

• Exemplo:

ANTES DEPOIS

5

2

31

8

7

119

100

0

0 0

0

+1

+1

00

Page 49: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 49

Remover 7

Remoção em Árvores AVL

• Exemplo:

ANTES DEPOIS

5

2

31

8

7

119

100

0

0 0

0

+1

+1

00

5

2

31

8

119

100

0

0 0

0

+2

+1

0

Page 50: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 50

Rebalancear Rotação Simples à Esquerda

Remoção em Árvores AVL

• Exemplo:

5

2

31

8

119

100

0

0 0

0

+2

+1

00

A

B

5

2

31

10

8

9

110

0

0

+1 0

-1

+1

0

Page 51: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 51

Remoção em Árvores AVL

• Exemplo:Remover 3

5

2

31

10

8

9

110

0

0

+1 0

-1

+1

0

5

2

1

10

8

9

110

-1

0

+1 0

-1

+1

ANTES DEPOIS

Page 52: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 52

Remoção em Árvores AVL

• Exemplo:Remover 2

5

2

1

10

8

9

110

-1

0

+1 0

-1

+1

ANTES DEPOIS

5

10

8

9

11

0

0

+1 0

-1

+2

1

Page 53: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 53

Remoção em Árvores AVL

• Exemplo:

5

10

8

9

11

0

0

+1 0

-1

+2

1

A

B

C

Rebalancear Rotação Dupla à Esquerda

8

5 10

9 110 0 0

0

0

1

-1

Page 54: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 54

Remoção em Árvores AVL

• Exemplo:

8

5 10

9 110 0 0

0

0

1

-1

Remover 1

ANTES DEPOIS

8

5 10

9 110 0

0

+1

0

Page 55: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 55

Remoção em Árvores AVL

• Exemplo:Remover 5

ANTES DEPOIS

8

10

9 110 0

0

+28

5 10

9 110 0

0

+1

0

Page 56: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 56

Remoção em Árvores AVL

• Exemplo:

Rebalancear Rotação Simples à Esquerda

8

10

9 110 0

0

+2 A

B8

10

9

110

0

-1

+1

Page 57: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 57

Remoção em Árvores AVL

• Observação:

– Enquanto a inserção de uma única chave pode resultar em uma rotação de dois ou três nós no máximo, a remoção pode exigir uma rotação em cada um dos nós ao longo de toda a trajetória de busca.

– Ver exercício a seguir.

Page 58: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 58

Remoção em Árvores AVL

• Exercício: Remover 4

5

3

2

1 4

10

8

129

11

0

+1 0

-1

0 0-1

+1

-1

+1

-1

0

7

6

Page 59: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Exercício

• Dada uma árvore AVL inicialmente vazia:– Insira: 50, 70, 90, 30, 10, 40, 80, 60, 75,

35, 100, 73

– Remova: 10, 70, e depois as raízes das árvores resultantes até obter novamente uma árvore vazia

Estrutura de Dados II - Márcio Bueno 59

Page 60: Arquitetura de Computadores - Marcio BuenoEstrutura de Dados II - Márcio Bueno 5 Introdução •Árvores Binárias de Busca –Alternativa •Tornar a árvore novamente completa,

Estrutura de Dados II - Márcio Bueno 60

Bibliografia Recomendada

• SZWARCFITER, Jayme Luiz; MARKENZON, Lilian. Estruturas de Dados e seus Algoritmos. 2. ed. rev. Rio de Janeiro: LTC, 1994.

• WIRTH, Niklaus. Algoritmos e estruturas de dados. 1. ed. Rio de janeiro: LTC, 1999.