Escolar Documentos
Profissional Documentos
Cultura Documentos
PAA-PG Duvidas Aula19032020
PAA-PG Duvidas Aula19032020
1 7
2 5
4 6
Figure 1: T
Exemplo i:
Utilizar o Algoritmo 4.1 para fazer uma busca na árvore binária de busca T da Figura 2 para
valores de chave x = 5, x = 0 e x = 8. Determinar os valores de f e pt1 para cada valor de x no
final da execução do algoritmo.
O Algoritmo 4.1 tem por saı́da a variável f que informa o resultado da busca:
f = 0 ⇒ árvore vazia.
f = 1 ⇒ x ∈ S = {s1 , ..., sn } busca com sucesso, pt indica o endereço de memória no qual se
encontra armazenada a chave x.
f = 2, 3 ⇒ x 6∈ S = {s1 , ..., sn } busca sen sucesso.
1
ptraiz
&
10
5|3|20
5 20
λ|1|15 3|7|λ
15 3
λ|2|λ 13|5|17
13 17
λ|4|λ λ|6|λ
Usaremos o Algoritmo 4.1 com entrada x = 5 e pt = ptraiz para a árvore binária de busca
em alocação encadeada de memória da Figura 2.
pt = ptraiz = 10; x = 5
busca-arvore(x, pt, f )
pt = 10 6= λ
5 = x = pt ↑ .chave = 3?, nao
5 = x < pt ↑ .chave = 3?, nao
5 = x > pt ↑ .chave = 3?, sim
pt = pt ↑ .dir = 20
busca-arvore (5, 20, f )
pt = 20 6= λ
5 = x = pt ↑ .chave = 7?, nao
5 = x < pt ↑ .chave = 7?, sim
pt = pt ↑ .esq = 3
busca-arvore (5, 3, f )
pt = 3 6= λ
5 = x = pt ↑ .chave = 7?, sim então f = 1
Depois de aplicar o Algoritmo 4.1 com entrada x = 5 e pt = ptraiz para a árvore binária de
busca em alocação encadeada de memória da Figura 2, obtemos a saı́da pt = 3 (último endereço
de memória atingido pelo algoritmo) e f = 1 (busca com sucesso). Portanto existe chave x = 5
na árvore da Figura 2 e se encontra no endereço de memória dado por pt, igual a 3 neste caso.
Usaremos o Algoritmo 4.1 com entrada x = 0 e pt = ptraiz para a árvore binária de busca
em alocação encadeada de memória da Figura 2.
pt = ptraiz = 10; x = 0
2
busca-arvore(x, pt, f )
pt = 10 6= λ
0 = x = pt ↑ .chave = 3?, nao
0 = x < pt ↑ .chave = 3?, sim
pt = pt ↑ .esq = 5
busca-arvore (0, 5, f )
pt = 5 6= λ
0 = x = pt ↑ .chave = 1?, nao
0 = x < pt ↑ .chave = 1?, sim
pt = pt ↑ .esq = λ? sim então f = 2
Depois de aplicar o Algoritmo 4.1 com entrada x = 0 e pt = ptraiz para a árvore binária de
busca em alocação encadeada de memória da Figura 2, obtemos a saı́da pt = 5 (último endereço
de memória atingido pela busca) e f = 2 (busca sem sucesso e a chave x poderia ser inserida
como raiz da subárvore esquerda da raiz, alocada no endereço de memória pt, igual a 5 neste
caso) .
Usaremos o Algoritmo 4.1 com entrada x = 8 e pt = ptraiz para a árvore binária de busca
em alocação encadeada de memória da Figura 2.
pt = ptraiz = 10; x = 0
busca-arvore(x, pt, f )
pt = 10 6= λ
8 = x = pt ↑ .chave = 3?, nao
8 = x < pt ↑ .chave = 3?, nao
8 = x > pt ↑ .chave = 3?, sim
pt = pt ↑ .dir = 20
busca-arvore (8, 20, f )
pt = 20 6= λ
8 = x = pt ↑ .chave = 7?, nao
8 = x < pt ↑ .chave = 7?, nao
8 = x > pt ↑ .chave = 7?, sim
pt ↑ .dir = λ? sim então f = 3
Depois de aplicar o Algoritmo 4.1 com entrada x = 8 e pt = ptraiz para a árvore binária de
busca em alocaç ao encadeada de memória da Figura 2, obtemos a saı́da pt = 20 (último endereço
de memória atingido pela busca) e f = 3 (busca sem sucesso e a chave x poderia ser inserida
como raiz da subárvore direita da raiz alocada no endereço de memória pt, igual a 20 neste caso).
3
Exercı́cio ii:
Utilizar o Algoritmo 4.2 para fazer uma inserção na árvore binária de busca da Figura 2 para
valores de chave x = 5, x = 0 e x = 8. Mostrar a árvore ao final da inserção em cada caso.
Usaremos o Algoritmo 4.2 com entrada x = 5 e pt = ptraiz para a árvore binária de busca
em alocação encadeada de memória da Figura 2.
pt = ptraiz = 10; x = 5
busca-arvore(x, pt, f )
obtemos pt = 3 e f = 1
f = 1? sim então ”inserção invalida”
Depois de aplicar o Algoritmo 4.2 na na árvore binária de busca da Figura 2, a inserção não
é possı́vel pois já existe chave x = 5 no endereço de memória pt = 3. A árvore da Figura 2 não
muda.
Usaremos o Algoritmo 4.2 com entrada x = 0 e pt = ptraiz para a árvore binária de busca
em alocação encadeada de memória da Figura 2.
pt = ptraiz = 10; x = 0
busca-arvore(x, pt, f )
obtemos pt = 5 e f = 2
f = 1? nao então ocupar(pt1) % pt1 = 22
pt1 ↑ .chave = 0; pt1 ↑ .inf o = novo (se existir outra informação)
pt1 ↑ .esq = λ; pt1 ↑ .dir = λ
f = 2 ? sim então pt ↑ .esq = pt1 = 22
Depois de aplicar o Algoritmo 4.2 na na árvore binária de busca da Figura 2, foi inserido
um novo nó no endereço de memória pt = 22 com chave x = 0, o novo nó é raiz da subárvore
4
ptraiz
&
10
5|3|20
5 20
22 6 λ|1|15 3|7|λ
22 15 3
λ|0|λ λ|2|λ 13|5|17
13 17
λ|4|λ λ|6|λ
esquerda da subárvore com raiz em pt = 5. A Figura 3 mostra a árvore obtida depois da inserção
do novo nó com chave x = 0.
Usaremos o Algoritmo 4.2 com entrada x = 8 e pt = ptraiz para a árvore binária de busca
em alocação encadeada de memória da Figura 2.
pt = ptraiz = 10; x = 8
busca-arvore(x, pt, f )
obtemos pt = 20 e f = 3
f = 1? nao então ocupar(pt1) % pt1 = 28
pt1 ↑ .chave = 8; pt1 ↑ .inf o = novo (se existir outra informação)
pt1 ↑ .esq = λ; pt1 ↑ .dir = λ
f = 2? nao
f = 3 ? sim então pt ↑ .dir = pt1 = 28
Depois de aplicar o Algoritmo 4.2 na na árvore binária de busca da Figura 2, foi inserido
um novo nó no endereço de memória pt = 28 com chave x = 8, o novo nó é raiz da subárvore
direita da subárvore com raiz em pt = 20.A Figura 4 mostra a árvore obtida depois da inserção
do novo nó com chave x = 8.
5
ptraiz
&
10
5|3|20
5 20
λ|1|15 3|7| 6 λ28
15 3 28
λ|2|λ 13|5|17 λ|8|λ
13 17
λ|4|λ λ|6|λ