Você está na página 1de 7

a) A complexidade para as tabelas de hash pode atingir O(n), caso não haja

uma distribuição equitativa das chaves no array. Enquanto que, a


complexidade logarítmica das árvores balanceadas é garantida. : V
b) Uma árvore Vermelha-Preta é uma árvore binária completa (esquerda). : F
c) A profundidade máxima de uma árvora binária simples é lg(n), onde n é o
número de elementos que contém. : F
d) Uma heap é uma árvore binária de pesquisa avançada. F
e) Na remoção numa árvore Vermelha-Preta é sempre necessário reorganizar:
F
2. [3.5v] Considere o seguinte vector de tarefas por
processar.12,20,17,22,8,6,10,16,4,3,9
a) [2.0] Converta-o num acervo (Heap), no qual a prioridade é tanto maior
quanto maior for o número, descrevendo os passos que seguiu.

Pagina 1 de 7
Árvore criada a partir do vector:

12 12

0 0

20 17 20 17

1 2 1 2

22 8 6 10 22 9 6 10
3 4 5 6 3 4 5 6

16 4 3 9 16 4 3 8
7 8 9 10 7 8 9 10

As sub-árvores cujas raizes estão em 9, 3, 4, 16, 10 Passo 1: Burbulhar descendente [4 ao último].


e 6 (folhas) são Heaps As sub-árvores cujas raizes estão em 9, 3, 4, 16, 10
e 6 são Heaps

12 22
0 0

22 17 20 17

1 2 1 2

20 9 6 10 16 9 6 10
3 4 5 6 3 4 5 6

16 4 3 8 12 4 3 8
7 8 9 10 Passo 2: Burbulhar descendente [1 ao último].

Pagina 2 de 7
As sub-árvores cujas raizes estão em 8, 3, 4, 16, Passo 3: Burbulhar descendente [0 ao último].
10, 6, 9, 20, 17 e 22 são Heaps Todas as sub-árvores são Heaps
7 8 9 10

Tabela final

b) [1.5]. Efectue, sobre o acervo, a operação de retirada da tarefa com maior


prioridade, explicando os passos seguidos, e apresente a tabela final após a
operação.

Remover maior prioridade (22)

20

0 0

20 17 17
1 2 1 2

16 9 6 10 16 9 6 10
3 4 5 6 3 4 5 6

12 4 3 12 4 3
7 8 9 7 8 9

Guardar 22 para retornar .


Guardar 8 para promover . Passo 1: 8 < max (20, 17)? Sim: 20 sobe, buraco desce.

20 20
0 0

16 17 16 17
1 2 1 2
9 6 10 12 9 6 10
3 4 5 6 3 4 5 6

12 4 3 4 3
7 8 9 7 8 9

Passo 2: 8 < max (16, 9)? Sim: 16 sobe, buraco desce. Passo 3: 8 < max (12, 4)? Sim: 12 sobe, buraco desce.

Pagina 3 de 7
20
0

16 17
1 2

12 9 6 10
3 4 5 6

8 4 3
7 8 9

Passo 4: colocar 8 no buraco .

Tabela final

Considere uma árvore Vermelha-Preta vazia.


a) [3.0] Insira sucessivamente os nós 70, 20, 60, 15, 30, 25 (por esta ordem),
descrevendo cada passo que efectua.
Inserir 70 Inserir 20 Inserir 60

70 70 70 60

20 20 20 70
Pai vermelho , tio
null: Rotação
60

Inserir 15 Inserir 15 Inserir 15

60 60 60

Pai vermelho, tio


Nó raíz. Passa a
20 70 vermelho: Recolorir 20 70 20 70
preto
e continuar em avó

15 15 15

Inserir 30 Inserir 25 Inserir 25


Pagina 4 de 7
60 60 60

20 70 20 70 20 70
Pai vermelho, tio
vermelho: Recolorir
30 15 30 e continuar em avó 15 30
15

25 25

Pai preto. Fim.

b) [2.0] Remova o nó 70, descrevendo os passos da operação.

Remover 70

60 20 20

20
15 60 15 30

Duplo preto .
15 30 Irmão vermelho , 30 25 60
pai preto: Rotação .
Continuar com o nó
25
25
Irmão preto ,
sobrinho vermelho :
Rotação .

[4.5v] Considere a árvore binária de pesquisa avançada (AVL) da figura abaixo.

a) [1.5] Remova da árvore o nó raiz, descrevendo os passos da operação.

Pagina 5 de 7
b) [1.0]. Insira os nós 25 e 20 (por esta ordem).

c) [1.0]. Enumere os elementos da pilha (da base para o topo) do passo do


caminho após a insersão do nó 20.
R: 25, 28, 32, 16.
d) [1.0].Classifique a árvore (em termos de equilíbrio) antes e depois da inserção
do nó 20.
R: Para os dois casos (antes e depois) de inserção do nó 20, a árvore manteve-se
equilibrada.
Uma árvore binária de pesquisa é uma árvore em que qualquer nó da
subárvoreesquerda de X é menor que X; e qualquer nó da sub-árvore direita de X
émaior que X.Desenvolva um método recursívo que permita construir uma árvore
binária de pesquisa a partir de um vector de elementos não ordenados.
TreeNode constroiABP(TreeNode tree, int elem)

Pagina 6 de 7
{
If (tree == null)
{
TreeNode novo = new TreeNode; //cria novo nodo
novo.elemento = elem; //recebe novo elemento
novo.leftChild = null; novo.rightChild =
null; return novo;
}
Else if(elem < tree.elemento) //vai para sub-arvore esquerda
tree.leftChild = constroiABP(tree.leftChild, elem);
else
tree.rightChild = constroiABP(tree.rightChild, elem); return tree;
}

Pagina 7 de 7

Você também pode gostar