• Nenhum resultado encontrado

• Árvores binárias de busca organizam os dados com o objetivo de otimizar as buscas • Permite o acesso mais rápido aos elementos:

N/A
N/A
Protected

Academic year: 2022

Share "• Árvores binárias de busca organizam os dados com o objetivo de otimizar as buscas • Permite o acesso mais rápido aos elementos:"

Copied!
71
0
0

Texto

(1)
(2)

• Árvores binárias de busca organizam os dados com o objetivo de otimizar as buscas

• Permite o acesso mais rápido aos elementos:

– Elementos menores que a raiz estão na esquerda – Elementos maiores que a raiz estão na direita

• Estas árvore podem assumir diferentes formas quando criadas ou modificadas

– A ordem de inserção ou remoção influem no formato da árvore

– Pode afetar o tempo necessário para recuperar um item armazenado

(3)

• Ordem de Inserção: 2 , 3, 4, 7, 8

2

(4)

• Ordem de Inserção: 2 , 3 , 4, 7, 8

2

3

(5)

• Ordem de Inserção: 2 , 3 , 4 , 7, 8

2

3

4

(6)

• Ordem de Inserção: 2 , 3 , 4 , 7 , 8

2

3

4

7

(7)

• Ordem de Inserção: 2 , 3 , 4 , 7 , 8

2

3

4

8 7

Estrutura de uma Lista.

Árvore Degenerada

(zigue-zague)

(8)

• Cada nó tem graus 0 ou 2

• Ou um nó é folha ou tem 2 filhos

1

2 3

4 5

6 7 8 9

(9)

• Toda folha está ou no último ou no penúltimo nível da árvore

A

B C

F G

H I

D E

(10)

• Árvore estritamente binária em que toda folha se localizar no último nível

A

B C

F G

N O

D E

L M

J K

H I

(11)

• A denominação AVL vem dos seus dois criadores: A del’son- V el’skii e L andis

• Uma árvore binária de busca é AVL se:

– Para todos os seus nós, as alturas de suas duas subárvores diferem no máximo de uma unidade

• Em árvores AVL as operações de inserção e remoção devem atualizar o balanceamento

– Utiliza-se o fator de balanceamento (FB)

(12)

• Como saber se a árvore está desbalanceada?

– Verificando se existe algum nó desbalanceado

• Como saber se um nó está desbalanceado ?

– Subtraindo-se as alturas das suas subárvores

• Fator de Balanceamento

– Obtido pela subtração da altura da subárvore

esquerda (he) e da altura da subárvore direita (hd) – FB = he – hd

• O FB dos nós Internos será a subtração da

altura de suas subárvores (folhas tem FB = 0)

(13)

• Dividida em duas etapas

– Inserção de elementos é da mesma maneira como acontece nas árvores binárias de buscas

– Verificar se a árvore resultante é ou não AVL (tratando o fator de balanceamento)

– Para cada novo nó inserido, seu fator de balanceamento é iniciado com 0 (zero)

– Após a inserção é necessário atualizar o FB dos ancestrais do nó inserido

(14)

• A busca é exatamente a mesma

– Toda AVL é uma árvore binária de busca

• A remoção em uma árvore AVL é exatamente igual à da árvores binárias de busca

– Porém, é preciso atualizar o fator de balanceamento

(15)

• Cada nó em uma árvore binária balanceada (AVL) deve ter balanceamento: -1, 0 ou +1

> 0 se a subárvore da esquerda for maior

0 se ambas as subárvores forem do mesmo tamanho

< 0 se a subárvore da direita for maior

• Um nó com FB superior ou inferior a estes

valores é considerado desbalanceado

(16)

2

1 3

4 5

(17)

1. Definir fb = 0 para os nós folhas.

(18)

1. Definir fb = 0 para os nós folhas.

0

0 0

(19)

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd 1 - 2

0

0 0

(20)

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd

0

0 0

-1

(21)

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd 1 - 1

0

0 0

-1

(22)

• Balanceada (É AVL)

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd

0 0

0 0

-1

(23)

2

1 3

5

8

(24)

1. Definir fb = 0 para os nós folhas.

(25)

0

0

1. Definir fb = 0 para os nós folhas.

(26)

0

0

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd 1 - 3

(27)

0

0

-2 1. Definir fb = 0 para os nós

folhas.

2. Calcular o fb:

he – hd

(28)

0

0

-2 1. Definir fb = 0 para os nós

folhas.

2. Calcular o fb:

he – hd 0 - 2

(29)

0

0 -2

-2

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd

(30)

0

0 -2

-2

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd 0 - 1

(31)

• Desbalanceada (Não é AVL)

0

0 -2

-2

1. Definir fb = 0 para os nós folhas.

2. Calcular o fb:

he – hd

-1

(32)

• O desbalanceamento ocorre quando

– O nó inserido é descendente esquerdo de uma subárvore cujo nó raiz tenha FB igual 1

1. Cenário:

42 31

22

8

5

42 31

22

8

2. Cenário:

(33)

• O desbalanceamento ocorre quando

– O nó inserido é descendente direito de uma subárvore cujo nó raiz tenha FB igual –1

1. Cenário:

10

20

30

35

44 10

20

30

35

2. Cenário:

(34)

• Para manter uma árvore balanceada, é

necessário fazer uma transformação na árvore

– A árvore continua sendo um árvore de busca binária

• A transformação a ser feita na árvore para mantê-la balanceada é chamada de rotação

– A rotação poderá ser feita à esquerda ou à direita dependendo do desbalanceamento

– Dependendo do desbalanceamento, apenas uma rotação não é suficiente para resolvê-lo

(35)

• Existem 4 tipos de rotações para rebalancear uma árvore AVL

– Rotação simples à Direita;

– Rotação simples à Esquerda;

– Rotação dupla à Direita (Direita + esquerda); e – Rotação dupla à Esquerda (Esquerda + direita).

• Se o FB é positivo, então as rotações são feitas à direita, caso contrário, são feitas à esquerda

• A rotação deve iniciar a partir do nó interno

mais desbalanceado

(36)

• Passo 1

– Identificar o nó (+ interno) cujo fb é igual à +2

• Passo 2

– Fazer com que o nó à esquerda do nó detectado no passo 1 vire a raiz

• Passo 3

– Se o novo nó raiz tiver uma subárvore a direita, então essa subárvore passa a ser a subárvore a esquerda da antiga raiz

– Caso contrário, finaliza a execução do algoritmo

(37)

• Passo 1

T1

T2

T3 U

P P

(38)

• Passo 2

T1

T2

T3 U

P

T1

U

T2

T3 P

(39)

• Passo 2

T1

T2

T3 U

P

T1

U

T3 P

(40)

• Passo 3

T1

T2

T3 U

P

T1

U

T2 T3

P

(41)

• Exemplo 1

30 20

10

U

P

(42)

• Exemplo 1

30 20

10 30

20

10

U

P

(43)

• Exemplo 2

30

20

25 10

U

P

(44)

• Exemplo 2

25 20

30 10

30

20

25 10

U

P

(45)

• Exemplo 3

U

P

5

42 31

22

8

(46)

• Exemplo 3

8

22 5

U

P

5

42 31

22

8

42 31

(47)

• Exemplo 4

I

E B

A D

G

F H

K

J L

C

T1 T2

U T3

P

(48)

• Exemplo 4

E B

A D

C

I G

F H

K

J L

T1

T2

T3 U

P

(49)

• Passo 1

– Identificar o nó (+ interno) cujo fb é igual à -2

• Passo 2

– Fazer com que o nó à direita do nó detectado no passo 1 vire a raiz

• Passo 3

– Se o novo nó raiz tiver uma subárvore a esquerda, então essa subárvore passa a ser a subárvore a

direita da antiga raiz

– Caso contrário, finaliza a execução do algoritmo

(50)

• Passo 1

T3 T2

T1

Z P

Z P

(51)

• Passo 2

T3 T2

T1

Z P

T3 T2

T1

Z

P

(52)

• Passo 2

T3 T2

T1

Z P

T3 T1

Z

P

(53)

• Passo 3

T3 T2

T1

Z P

T3 T1 T2

Z

P

(54)

• Exemplo 1

10

20

30

Z P

(55)

• Exemplo 1

30 20

10 10

20

30

Z P

(56)

• Exemplo 2

10

20

15 30

Z P

(57)

• Exemplo 2

10

20

15 30 15

20

10 30

Z P

(58)

• Exemplo 3

Z P

44 10

20

30

35

(59)

• Exemplo 3

Z P

44 10

20

30

35

35

30 44

10

20

(60)

• Exemplo 4

T1

T2

T3 8 Z

4 10

9 15

12 P

(61)

• Exemplo 4

10

8 15

9 12

4

Z

P

T1 T2

T3

(62)

• Passo 1

– Identificar o nó (+ interno) cujo fb é igual à +2

– Verificar se o fb do nó à esquerda do nó detectado no passo 1 é negativo

• Passo 2

– Fazer uma rotação à esquerda na subárvore da esquerda

• Passo 3

– Fazer uma rotação à direita na “árvore original”

(63)

• Exemplo usando rotação simples à direita

20

10

15

10

20

15 2

-1

0

(64)

• Exemplo usando rotação dupla à direita

20 15

10

1º.

20

15

10

2º. 3º.

20

10

15

2

-1

0

(65)

• Passo 1

8

10 4

6 2

5

2

0 -1

1 0

0

Fator de balanceamento

(66)

• Passo 2

8

4 10

6 2

5 4

(67)

• Passo 2

8

10 6

4

5 2

(68)

• Passo 3

8

10 6

4

5 2

8

(69)

• Passo 3

6

8 4

5

2 10

(70)

• Passo 1

– Identificar o nó (+ interno) cujo fb é igual à -2

– Verificar se o fb do nó à direita do nó detectado no passo 1 é positivo

• Passo 2

– Fazer uma rotação à direita na subárvore da direita

• Passo 3

– Fazer uma rotação à esquerda na “árvore original”

(71)

• Exemplo

10

20

15

-2

1

0 20

15

10

1º.

10

15

20

2º. 3º.

Referências

Documentos relacionados

Professores do 3º Ciclo e do Ensino Secundário da Esc.. Ação e formador Área Destinatários Modalidade e nº horas Calendarização. APRENDIZAGEM ATIVA COM RECURSO ÀS TIC

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

To measure the horizontal and resultant lower limbs external kinetics at backstroke starting, researchers have used one force plate, while for ventral starts one and two force

Certain it is, this was not the case with the redoubtable Brom Bones; and from the moment Ichabod Crane made his advances, the interests of the former evidently declined:

Os maiores coeficientes da razão área/perímetro são das edificações Kanimbambo (12,75) e Barão do Rio Branco (10,22) ou seja possuem uma maior área por unidade de

Portanto, de acordo com Tfouni (apud MORAES, 2005, p.4), “enquanto a alfabetização se ocupa da aquisição da escrita por um indivíduo, ou grupo de indivíduos,

Aplicando-se análise fatorial nas variáveis que foram distribuídas entre as três dimensões identificadas no estudo, foi possível encontrar cinco fatores: aspectos

O texto está configurado em seções que, articuladas entre si, discutem determinada compreensão sobre cultura digital, apreciações de conceitos que fundamentam o aprender e