Buscar

respostas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Continue navegando


Prévia do material em texto

Luca de Paula Nascimento Lima 
RA: 140427 
AULA 6: Exercício teórico métodos de pesquisa 
 
1) (0,4) Suponha que nós com chaves {50, 30, 70, 20 40, 60, 80, 15, 25, 35, 45, 36} são 
inseridos nesta ordem em uma árvore binária. 
a) Desenhe a árvore resultante. 
 
b) Em seguida, remova o nó 30 e mostre a nova árvore. 
 
 
2) (0,3) A operação de eliminação é comutativa, ie, a eliminação de x e depois y 
resulta na mesma árvore que a eliminação de y e depois x? Mostre um contra- 
exemplo. 
 
R: temos a árvore (15(5()(10()()))30()()), se removermos primeiro o 15, se o algoritmo 
buscar primeiro o nó mais à direita da subárvore da esquerda, o y vai tomar o seu lugar 
ficando (10(5)(30)), depois tirando o 10 teremos (5()(30()())) ou (30(5()())()), porém se 
buscarmos primeiro o nó mais à esquerda da subárvore à direita chegaremos no resultado 
(30(5()(10()())()) e tirando o 10 ficaremos com (30(5()())()) agora se tirarmos o 10 primeiro 
ficaremos com 
(15(5()())(30()()), e depois tirando o 15 ficaremos com (5()(30()())) ou (30)(5()())()). 
 
 
 
 
 
 
3) (0,3) No slide 16 foi apresentado um algoritmo de remoção da raiz em uma árvore 
binária de busca. Escreva um algoritmo de remoção completo em árvore binária, 
ie, para remover qualquer elemento da árvore. Explique os passos/lógica do 
algoritmo. 
 
R: 
int remove_ArvBin(ArvBin *raiz, int valor){ 
if(raiz==NULL) return 0; 
struct NO* ant = NULL 
struct NO* atual =*raiz; 
while(atual != NULL){ 
if(valor==atual->info){ 
*raiz = remove_atual(atual); 
else{ 
if(ant->dir == atual) 
ant->dir = remove_atual(atual); 
else 
ant->esq = remove_atual(atual); 
} 
return 1 
} 
ant =atual; 
if(valor > atual->info) 
atual = atual->dir; 
else 
atual = atual->esq; 
} 
 
struct NO* remove_atual(struct NO* atual){ 
struct NO *no1, *no2; 
if(atual->esq == NULL){ 
no2 = atual->dir; 
free(atual); 
return no2; 
} 
no1 = atual; 
no2 = atual->esq; 
while(no2->dir != NULL){ 
no1 = no2; 
no2 = no2->dir; 
} 
if(no1 != atual){ 
no1->dir = no2->esq; 
no2->esq = atual->esq; 
} 
no2->dir = atual->dir; 
free(atual); 
return no2; 
}