• Nenhum resultado encontrado

Prof. Yandre Maldonado Prof. Yandre Maldonado -1

N/A
N/A
Protected

Academic year: 2022

Share "Prof. Yandre Maldonado Prof. Yandre Maldonado -1"

Copied!
64
0
0

Texto

(1)

ÁRVORES

Prof. Yandre Maldonado

ÁRVORES

Prof. Yandre Maldonado -1

Prof. Yandre Maldonado e Gomes da Costa

(2)

Árvores

Árvores são estruturas de dados que

caracterizam uma relação entre os dados que a

Prof. Yandre Maldonado

caracterizam uma relação entre os dados que a compõem;

A relação existente entre os dados (nós) de uma árvore, é uma relação de hierarquia;

Formalmente, uma árvore é um conjunto finito T de um ou mais nós, tais que:

Prof. Yandre Maldonado -2

T de um ou mais nós, tais que:

Existe um nó denominado raiz da árvore;

Os demais nós formam m≥0 conjuntos separados T

1

, T

2

, ..., T

m

, onde cada um destes conjuntos é uma árvore. As

árvores T

i

(1≤i ≤m) recebem a denominação de subárvores.

(3)

Árvores

Esquematicamente, uma árvore pode ser representada da seguinte forma:

Prof. Yandre Maldonado

seguinte forma:

A

C

B D

Prof. Yandre Maldonado -3

E F G H

K

I J

(4)

Árvores

Terminologia:

No exemplo anterior, os quadrados representam os nós da

Prof. Yandre Maldonado

No exemplo anterior, os quadrados representam os nós da árvore, cuja raiz é o nó ‘A’;

Pela definição de árvore, cada nó da árvore é raiz de uma subárvore. O número de subárvores de um nó é o grau deste nó;

O grau de uma árvore é igual ao grau do nó de maior grau pertencente à mesma;

Um nó de grau zero é chamado de folha ou nó terminal;

Prof. Yandre Maldonado -4

Um nó de grau zero é chamado de folha ou nó terminal;

O nível do nó é definido como sendo o igual ao número de nós que o separam da raiz;

A altura de uma árvore é definida como sendo o nível mais alto da árvore;

Um conjunto de zero ou mais árvores disjuntas é chamado

de floresta;

(5)

Árvores

Em relação a árvore descrita anteriormente, pode-se observar:

Prof. Yandre Maldonado

Nodo Grau Nível Observações

A 3 0 Raiz da Árvore

B 1 1

C 2 1

D 1 1

E 0 2 Nó folha

F 0 2 Nó folha

Prof. Yandre Maldonado -5

F 0 2 Nó folha

G 0 2 Nó folha

H 3 2

I 0 3 Nó folha

J 0 3 Nó folha

K 0 3 Nó folha

(6)

Árvores

Quando a ordem das subárvores é significativa, a árvore é chamada de ordenada. Neste caso, há diferença entre as

Prof. Yandre Maldonado

seguintes árvores:

A

C B

A

B C

Prof. Yandre Maldonado -6

Entretanto, quando a ordem das subárvores não é relevante, diz-se que a árvore é orientada, uma vez que apenas a

orientação dos nós é importante (neste caso as duas árvores

mostradas acima são iguais);

(7)

Árvores

A raiz de uma árvore é chamada de pai das raízes de suas subárvores. As raízes das subárvores de um nó são

Prof. Yandre Maldonado

subárvores. As raízes das subárvores de um nó são

chamadas de irmãos que, por sua vez, são filhos de seu nó pai.

Formas de Representação de Árvores:

Árvore convencional (grafos)

A C F

Prof. Yandre Maldonado -7

C B

E

D F

ou A

B

E

D

(8)

Árvores

Conjuntos Aninhados ou Diagramas de Venn:

Prof. Yandre Maldonado

A

B C

D E F

Prof. Yandre Maldonado -8

Parênteses Aninhados:

( A ( B ( D ) ( E ) ) ( C ( F ) ) )

(9)

Árvores

Barramento ou Tabelas:

Prof. Yandre Maldonado

A B

D E C

F

Prof. Yandre Maldonado -9

F

Notação Decimal (DEWEY):

1.A, 1.1.B, 1.1.1.D, 1.1.2.E, 1.2.C, 1.2.1.F.

(10)

Árvores

Aplicações de árvores:

Representações genealógicas;

Prof. Yandre Maldonado

Representações genealógicas;

Representação de objetos que possuem relação hierárquica.

• Exemplo: uma universidade Universidade C. Exatas

C. Tec. C. Bio.

Prof. Yandre Maldonado -10

... ...

...

...

D. Eng.

D. Inf.

AEDI TC

José Maria

(11)

Árvores

Aplicações:

Prof. Yandre Maldonado

Aplicações:

Índices de arquivos;

Árvores genealógicas ou hereditárias;

Organização de empresa (organograma);

Avaliação de expressões;

Prof. Yandre Maldonado -11

Avaliação de expressões;

Árvores de decisão;

Algoritmos e Classificação

(12)

Árvores

Exercício: dada a seguinte árvore, encontre:

A raiz da árvore;

Todos os nós folha;

Prof. Yandre Maldonado

Todos os nós folha;

O grau e o nível de cada nó;

A altura da árvore;

Todas as relações entre nós (irmão, pai, filho);

Descreva a árvore com todas as representações estudadas;

B D H

Prof. Yandre Maldonado -12

A

C F

G E

I

L K J

M

N

(13)

Árvores Binárias

“Conjunto finito de nós que, ou é vazio, ou consiste de uma raiz ligando até duas outras árvores binárias.”

Prof. Yandre Maldonado

ligando até duas outras árvores binárias.”

São árvores onde o grau de cada nó é menor ou igual a dois;

As subárvores de cada nó são chamadas subárvore esquerda e subárvore direita;

Assim, se um nó possuir apenas uma subárvore,

Prof. Yandre Maldonado -13

Assim, se um nó possuir apenas uma subárvore, ela deve ser estabelecida como direita ou

esquerda;

Uma árvore binária pode ser vazia, isto é, não

possuir nenhum nó;

(14)

Árvores Binárias

Alocação:

Por adjacência:

Prof. Yandre Maldonado

Por adjacência:

• Nós representados seqüencialmente na memória;

• Esta alocação não é conveniente na maioria dos casos, pois dificulta a manipulação da estrutura;

Prof. Yandre Maldonado -14

estrutura;

A

C

| B

|

G

| |

D

C | E |

F

| |

A 2 B 1 D 1 F 0 C 1 E 1 G 0

(15)

typedef struct {

int chave;

//Outros Campos } Registro;

Árvores Binárias

Alocação:

Encadeada:

Prof. Yandre Maldonado

struct Nodo {

Registro Reg;

Nodo* Dir;

Nodo* Esq;

};

Encadeada:

• Mais adequada;

• Permite melhor manipulação dos dados com diversas

ordens de acesso aos nós;

• Os nós são alocados

dinamicamente; Item de

Prof. Yandre Maldonado -15

dinamicamente;

A

C

| B

|

G

| |

D | E |

F

| |

Item de dado

esq dir

| = NULL

(16)

Árvores Binárias

Caminhamento em Árvores Binárias:

É a forma de percorrer todos os nós da

Prof. Yandre Maldonado

É a forma de percorrer todos os nós da árvore, com o objetivo de consultar ou alterar suas informações;

Existem vários métodos de tal forma que cada nó seja “visitado” apenas uma vez;

Um completo percurso da árvore nos dá

Prof. Yandre Maldonado -16

Um completo percurso da árvore nos dá um arranjo linear sobre os nós;

São três os principais caminhos utilizados

para percorrer uma árvore binária: visitar

os nós em ordem pré-fixada, pós-fixada,

ou in-fixa (in-ordem).

(17)

Árvores Binárias

Formas de caminhar:

Pré-ordem: RED

Prof. Yandre Maldonado

• Visitar a raiz;

• Percorrer a subárvore esquerda;

• Percorrer a subárvore direita;

In-ordem: ERD (percorre as chaves em ordem crescente)

• Percorrer a subárvore esquerda;

• Visitar a raiz;

• Percorrer a subárvore direita;

Prof. Yandre Maldonado -17

• Percorrer a subárvore direita;

Pós-ordem: EDR (ou forma polonesa)

• Percorrer a subárvore esquerda;

• Percorrer a subárvore direita;

• Visitar a raiz;

Obs.: o termo visita indica alguma manipulação sobre o nó.

(18)

Árvores Binárias

Exemplo: dada a seguinte árvore, verifique a seqüência de nos percorridos segundo as três formas de caminhar sobre árvores binárias.

Prof. Yandre Maldonado

árvores binárias.

1

3 2

5 | 4

| | | 6 7

Prof. Yandre Maldonado -18

11

| |

10

| |

8

| | | 9 |

Pré-ordem: 1, 2, 4, 5, 8, 3, 6, 9, 7, 10, 11 In-ordem: 4, 2, 8, 5, 1, 6, 9, 3, 10, 7, 11

Pós-ordem: 4, 8, 5, 2, 9, 6, 10, 11, 7, 3, 1 (polonesa)

(19)

Árvore Binária

Algoritmos de travessia em árvores binárias

observe que os procedimentos são recursivos,

Prof. Yandre Maldonado

observe que os procedimentos são recursivos, devido à natureza recursiva da estrutura (árvore).

void in_ordem (Nodo* T) {

if (T!=NULL) {

void pre_ordem (Nodo* T) {

if (T!=NULL) {

Prof. Yandre Maldonado -19

in_ordem (T->Esq);

printf("Item: %d",T->Reg.chave);

in_ordem (T->Dir);

} } printf("Item: %d",T->Reg.chave);

pre_ordem (T->Esq);

pre_ordem (T->Dir);

}

}

(20)

Árvores Binárias

void pos_ordem (Nodo* T)

Prof. Yandre Maldonado

void pos_ordem (Nodo* T) {

if (T!=NULL) {

pos_ordem (T->Esq);

pos_ordem (T->Dir);

printf("Item: %d",T->Reg.chave);

Prof. Yandre Maldonado -20

printf("Item: %d",T->Reg.chave);

}

}

(21)

Árvores Binárias de Busca

Árvore Binária de Busca ou Árvore de Pesquisa:

Prof. Yandre Maldonado

Pesquisa:

Uma ABB para um subconjunto S é uma árvore binária com rótulos no qual cada vértice v está rotulado com elementos e(v) S |:

1. Para cada vértice µ na subárvore Esq de v ⇒

Prof. Yandre Maldonado -21

1. Para cada vértice µ na subárvore Esq de v ⇒ e( µ ) < e(v);

2. Para cada vértice µ na subárvore Dir de v ⇒ e( µ ) > e(v);

3. Para cada elemento a ∈ S, existe exatamente

um vértice v | e(a)=v.

(22)

Árvores Binárias de Busca

Em resumo, uma árvore binária de

Prof. Yandre Maldonado

Em resumo, uma árvore binária de pesquisa é uma árvore binária onde cada nó interno possui um registro, tal que:

todo registro alocado na sua

subárvore esquerda é menor do que o

Prof. Yandre Maldonado -22

subárvore esquerda é menor do que o nó pai;

e todo registro alocado na subárvore

direita é maior do que o nó pai.

(23)

Árvores Binárias de Busca

Exemplo:

Prof. Yandre Maldonado

Exemplo:

5

8 2

Prof. Yandre Maldonado -23

11

| |

9

| |

1 4 |

| | | 6 10

3

| | | 7 |

(24)

Árvores Binárias de Busca

A estrutura de dados para esta árvore

typedef struct typedef struct

{

Prof. Yandre Maldonado

para esta árvore poderia ser dada por:

int chave;

//Outros Campos } Registro;

struct Nodo {

Registro Reg;

Prof. Yandre Maldonado -24

Registro Reg;

Nodo* Dir;

Nodo* Esq;

};

(25)

Árvores Binárias de Busca

Operações básicas para uma árvore binária de busca:

Prof. Yandre Maldonado

busca:

Inicialização, inserção, remoção (e balanceamento);

Para isto, é preciso utilizar os processos recursivos de busca da árvore;

Procurasse um elemento Y na raiz, se ele não for encontrado deve-se procurá-lo na subárvore

esquerda caso ele seja menor que a raiz, ou na

Prof. Yandre Maldonado -25

encontrado deve-se procurá-lo na subárvore

esquerda caso ele seja menor que a raiz, ou na subárvore direita se ele for maior que a raiz;

Nas operações de alteração, remoção e consulta a busca deve ter sucesso, nas operações de

inserção a busca deve fracassar;

(26)

void insere_elemento (Nodo* T, Registro X) {

Árvores Binárias de Busca

Prof. Yandre Maldonado

{

if (T==NULL) {

T=(Nodo*)malloc(sizeof(Nodo));

T->Reg=X;

T->Esq=NULL;

T->Dir=NULL;

} else

if (X.chave<T->Reg.chave)

void inicializa_arvore (Nodo* T) {

T=NULL;

}

Prof. Yandre Maldonado -26

if (X.chave<T->Reg.chave) insere_elemento (T->Esq, X);

else

if (X.chave>T->Reg.chave) insere_elemento (T->Dir, X);

else

T->Reg=X; //Substitui }

}

(27)

Árvores Binárias de Busca

Remoção

Prof. Yandre Maldonado

Remoção

“Para se criar esta função deve-se fazer uma análise. Pois, se o elemento a ser removido tiver apenas um descendente, a remoção será simples. Mas se o elemento a ser removido

tiver dois descendentes, ele deverá ser substituído por aquele que estiver mais a direita em sua subárvore esquerda

(maior dos menores); ou por aquele que estiver mais a esquerda em sua subárvore direita (menor dos maiores).”

Prof. Yandre Maldonado -27

esquerda em sua subárvore direita (menor dos maiores).”

(28)

Árvores Binárias de Busca

Exemplo: na árvore da transparência 23, se removêssemos o nó com chave 5, poderíamos substituí-lo pelo nó com

Prof. Yandre Maldonado

o nó com chave 5, poderíamos substituí-lo pelo nó com chave 4 (como mostra a figura abaixo), ou pelo nó com chave 6.

4

8 2

Prof. Yandre Maldonado -28

8 2

11

| |

9

| |

3

| |

1

| | | 6 10

7

| |

(29)

Árvores Binárias de Busca

Neste algoritmo foi utilizado o sucessor a

void Remove_elemento (Nodo* T, Registro X) {

Nodo* A;

if (T==NULL)

printf ("Elemento nao encontrado na arvore.");

Prof. Yandre Maldonado

Registro Maior (Nodo* Q) {

while (Q->Dir != NULL) Q=Q->Dir;

return(Q->Reg);

utilizado o sucessor a esquerda, ou seja, o maior dos menores.

printf ("Elemento nao encontrado na arvore.");

else

if (X.chave<T->Reg.chave)

Remove_elemento (T->Esq, X);

else

if (X.chave>T->Reg.chave) Remove_elemento (T->Dir, X);

else

if (T->Dir==NULL) {

A=T;

T=T->Esq;

free(A);

} else

Prof. Yandre Maldonado -29

return(Q->Reg);

}...

else

if (T->Esq==NULL) {

A=T;

T=T->Dir;

free(A);

} else

{

T->Reg=Maior(T->Esq);

Remove_elemento (T->Esq,T->Reg);

} }

(30)

Ordem de complexidade da árvore binária:

220

Árvores Binárias de Busca

Prof. Yandre Maldonado

500 |

| 350 |

| 270 |

| 250 | 200 | |

| 130 | 110 | |

| 80 |

|

100 150 260 400

120 300

220

4 consultas – 15 chaves A Árvore Binária tem

Prof. Yandre Maldonado -30

4 consultas – 15 chaves 3 consultas – 7 chaves 2 consultas – 3 chaves 1 consulta – 1 chave

complexidade igual a pesquisa binária:

-Melhor caso: 1 consulta;

-Média: log

2n;

-Pior caso: log

2n

+1.

Onde n é o número de elementos armazenados na árvore.

Capacidade = 2

N

-1

Sendo N o número de níveis da árvore

(31)

Árvores Binárias de Busca

Balanceamento:

Prof. Yandre Maldonado

Balanceamento:

Busca uma distribuição equilibrada dos nós;

Busca otimizar a consulta;

Busca minimizar o número médio de comparações necessário para a

Prof. Yandre Maldonado -31

comparações necessário para a

localização de uma chave.

(32)

Árvores Binárias de Busca

Balanceamento por altura:

Prof. Yandre Maldonado

Balanceamento por altura:

Busca-se minimizar a altura da árvore;

Árvore Completamente Balanceada:

Uma árvore é completamente balanceada quando a distância média dos nós até a raiz for mínima;

Uma árvore binária é dita completamente

Prof. Yandre Maldonado -32

Uma árvore binária é dita completamente balanceada se, para cada nó, o número de nós de suas subárvores diferem de no

máximo, 1;

Árvore completamente balanceada é a

árvore com menor altura para o seu número

de nós.

(33)

Árvore AVL

Árvores não completamente balanceadas:

Prof. Yandre Maldonado

Uma árvore balanceada é uma árvore onde a diferença de altura de qualquer subárvore é no máximo 1;

O grande esforço exigido para a manutenção de uma árvore completamente balanceada pode não ser compensado pelo ganho de eficiência no

Prof. Yandre Maldonado -33

ser compensado pelo ganho de eficiência no processo de busca;

Árvore não completamente balanceadas beneficiam o processo de busca, exigindo

manutenção do balanceamento pouco onerosa.

(34)

Árvore AVL

Exemplo de árvore não completamente balanceada:

Prof. Yandre Maldonado

balanceada:

350 |

| 270 |

| 250 | 200 | |

| 130

110 | |

| 80 |

|

100 150 260 400 |

120 300

220

Prof. Yandre Maldonado -34

140 |

|

Neste contexto, destacam-se as árvores AVL, concebidas em 1962, por Adel’son-Vel’skii e Landis, caracterizadas pela

seguinte propriedade: para todo nó de uma árvore AVL, a

diferença entre as alturas de suas subárvores não excede a

uma unidade.

(35)

Árvore AVL

130 120

Prof. Yandre Maldonado

110 |

|

200 | 120 | |

| 80 |

|

100 150

150 |

|

200 | 110 | |

| 80 |

|

100 130

Árvore AVL Árvore não AVL

As constantes inserções e remoções de nós de uma

Prof. Yandre Maldonado -35

As constantes inserções e remoções de nós de uma árvore podem provocar o desbalanceamento da

mesma. Para corrigir este problema em uma árvore

AVL, é necessária a aplicação de uma das quatro

rotações que serão vistas a seguir.

(36)

Árvore AVL

Rotação Direita:

- u<b<p

- u passa a ser a raiz -b é pendurada à

esquerda de p - h≥0

Prof. Yandre Maldonado

Rotação Direita:

p u

c h

h

Rotação Direita

u a h p - h≥0

Prof. Yandre Maldonado -36

c

a b

h h h

h + 1 h +

2 b h c h

h

(37)

Exemplo de Rotação Direita:

Árvore AVL

Prof. Yandre Maldonado

Exemplo de Rotação Direita:

120

110

150

Rotação Direita

120

100

150

Prof. Yandre Maldonado -37

130 200

100

80

130 200

80

110

(38)

Rotação Esquerda:

- p<b<z

- z passa a ser a raiz -b é pendurada à

direita de p - h≥0

Árvore AVL

Prof. Yandre Maldonado

Rotação Esquerda:

p

z

h a h

Rotação Esquerda

z

p h c

- h≥0

Prof. Yandre Maldonado -38

a

c b

h

h h h

+ 1

h +

2 h a h b

h

(39)

Exemplo de Rotação Esquerda:

Árvore AVL

Prof. Yandre Maldonado

Exemplo de Rotação Esquerda:

Rotação Esquerda

120

100

150

120

100

130

Prof. Yandre Maldonado -39

130 200

80

110

80 110

150

200

(40)

Rotação Dupla Direita:

- b<v<c - u<v<p

- v passa a ser a raiz -h≥0

Árvore AVL

Prof. Yandre Maldonado

Rotação Dupla Direita

p

v

d h

u

a

v

p u

h +

Prof. Yandre Maldonado -40

v

b h c h

h a

ou

a b c d h

ou +

2

(41)

Exemplo de Rotação Dupla Direita:

Árvore AVL

Prof. Yandre Maldonado

120

100

150

Rotação Dupla Direita

120

110

150

Prof. Yandre Maldonado -41

130 200

80

110

130 200

80

100

(42)

Rotação Dupla Esquerda:

- b<y<c - p<y<z

- y passa a ser a raiz -h≥0

Árvore AVL

Prof. Yandre Maldonado

Rotação

Dupla Esquerda

y

z p

p

y h a

z

d

h +

Prof. Yandre Maldonado -42

a b c d h

ou y

c

h b h

d h

ou

+

2

(43)

Exemplo de Rotação Dupla Esquerda:

Árvore AVL

Prof. Yandre Maldonado

120

100

150

120

100

130

Rotação

Dupla Esquerda

Prof. Yandre Maldonado -43

130 200

80

110

150

80

110 200

(44)

Identificação do caso a ser aplicado:

Supondo que o nó q foi incluído na árvore T, se houver desbalanceamento da árvore, sendo p o

Árvore AVL

Prof. Yandre Maldonado

houver desbalanceamento da árvore, sendo p o nó raíz do desbalanceamento mais próximo das folhas de T:

• |he(p) – hd(p)| = 2

he: altura da subárvore esquerda hd: altura da subárvore direita

• Caso 1: he(p)>hd(p)

Prof. Yandre Maldonado -44

• Caso 1: he(p)>hd(p)

Sendo u o filho à esquerda de p:

1.1. he(u)>hd(u) ⇒ rotação direita

1.2. hd(u)>he(u) ⇒ rotação dupla direita

• Caso 2: hd(p)>he(p)

Sendo z o filho à direita de p:

2.1. hd(z)>he(z) ⇒ rotação esquerda

2.2. he(z)>hd(z) ⇒ rotação dupla esquerda

(45)

Árvore AVL

Exemplo de “crescimento” de uma árvore

Prof. Yandre Maldonado

Exemplo de “crescimento” de uma árvore AVL (com balanceamento):

Suponhamos a inserção das chaves na

seguinte seqüência: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

50

Prof. Yandre Maldonado -45

50

50

Pilha 30

50 Pilha

30 50 Pilha 50

30

20

(46)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

50

30

30 50 Pilha

50

Pilha

Prof. Yandre Maldonado -46

20

Pilha Pilha

(47)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30

20 50

30

20 50

20 30 Pilha

Prof. Yandre Maldonado -47

20 50 20 50

15

Pilha

(48)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30

20 50

15

20

20

Prof. Yandre Maldonado -48

15

10

20 30 Pilha

20

30

Pilha

(49)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30

15 50

30

15 50 10

Prof. Yandre Maldonado -49

15 50

10 20 10 20

12

15

30

Pilha

(50)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30

15 50 10

15 15

Prof. Yandre Maldonado -50

10 20

12

15 30 Pilha

15 30 Pilha

30

Pilha

(51)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30 15

10 30

15 50

Prof. Yandre Maldonado -51

30

20 50 10 20 12

12

(52)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30 15

10

20

30 30

Prof. Yandre Maldonado -52

30

20 50 12

18

30 15 Pilha

30 15 Pilha

15

Pilha

(53)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

Prof. Yandre Maldonado

17, 25, 24.

30 15

10

18 20 30

20

30

Prof. Yandre Maldonado -53

20 50 12

18 17

30 15 Pilha

30

15

Pilha

(54)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30 15

10 30

15

10

Prof. Yandre Maldonado -54

20 50 12

18 17

18 50 12

17 20

(55)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

20 18 30

18

30

30

15

10 30

Prof. Yandre Maldonado -55

30 15 Pilha

30 15 Pilha

30

15 Pilha 12 50

17 20

25

18

(56)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

30 15

10

15

10 20

Prof. Yandre Maldonado -56

12 50 17 20

25

18 12

17

30

25 50

18

(57)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

15

10

12

20

Seqüência inserida: 50, 30, 20, 15, 10, 12, 18, 17, 25, 24.

25 30 20 15

30 20 15

20

15

15

Prof. Yandre Maldonado -57

12

17

30

25 50

18

24

15 Pilha

15 Pilha

15 Pilha

15

Pilha

(58)

Árvore AVL

Seqüência inserida: 50, 30, 20, 15, 10, 12,

Prof. Yandre Maldonado

15

10

12

20 15

20

30 Seqüência inserida: 50, 30, 20, 15, 10, 12,

18, 17, 25, 24.

Prof. Yandre Maldonado -58

12

17

30

25 50

18

24

10

12 17

25 50

18

24

(59)

Exercício:

Árvore AVL

Prof. Yandre Maldonado

Exercício:

Dada a seguinte seqüência de chaves numéricas a serem inseridas em uma árvores AVL, mostre a seqüência de árvores AVL produzidas após a

inserção de cada uma destas chaves:

Prof. Yandre Maldonado -59

inserção de cada uma destas chaves:

• 50, 40, 45, 70, 80, 60, 90, 85, 82, 55, 75.

(60)

Exercício

Árvore AVL

Prof. Yandre Maldonado

Exercício

Dada a seguinte árvores AVL, mostre a seqüência de árvores produzidas

após a remoção de cada chave da seguinte seqüência:

• 50, 60, 55.

Prof. Yandre Maldonado -60

• 50, 60, 55.

(61)

Árvore AVL

Exclusão do 50:

Prof. Yandre Maldonado

Exclusão do 50:

Prof. Yandre Maldonado -61

(62)

Árvore AVL

Exclusão do 60:

Prof. Yandre Maldonado

Exclusão do 60:

Prof. Yandre Maldonado -62

(63)

Árvore AVL

Exclusão do 55:

Prof. Yandre Maldonado

Exclusão do 55:

Prof. Yandre Maldonado -63

(64)

Bibliografia

Azeredo, Paulo. Notas de aula de

Prof. Yandre Maldonado

Azeredo, Paulo. Notas de aula de Algoritmos e Estruturas de Dados.

INF/UFRGS, 2000;

Celes, Waldemar et al. Introdução a

Estruturas de Dados. Editora Campus, 2004;

Wirth, Niklaus. Algoritmos e Estruturas de

Prof. Yandre Maldonado -64

Wirth, Niklaus. Algoritmos e Estruturas de Dados. Editora PHB;

Ziviani, Nivio. Projeto de Algoritmos. Editora

Pioneira.

Referências

Documentos relacionados

Essa poética documental, embora não dialogue com a fotografia de vanguarda que a precedeu, inclusive no Brasil, pauta-se também em critérios antropológicos comuns a outros

Fizeram sucesso também, as obras de Waltercio Caldas, da Galeria Raquel Arnaud; Cildo Meirelles, da Galeria Luisa Strina; Knopp Ferro, da Dan Galeria; Newman Schutze,

O Climate Policy Initiative/ Núcleo de Avaliação de Políticas Climáticas da PUC-Rio trabalha para aprimorar políticas públicas de energia e uso da terra gerando evidências para

The Climate Policy Initiative/ Núcleo de Avaliação de Políticas Climáticas da PUC-Rio works to improve public energy and land use policies by generating evidence for decision makers

Ap ó ó s s nebuliza nebuliza ç ç ão ão de antibi de antibi ó ó tico, ocorre tico, ocorre melhora m. melhora m á á xima na fun xima na fun ç ç ão pulmonar nas ão

– Os elementos devem estar ordenados – Realizar a busca pelo meio do vetor.

Os resultados deste estudo sugerem que as creches podem representar um fator de risco para a colonização de orofaringe pelo Streptococcus pyogenes, fato obser- vado de

Até 31 de maio, todos os comércios e serviços do Estado de São Paulo considerados não essenciais devem permanecer fechados para evitar a transmissão do novo coronavírus