Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

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; 
}

Mais conteúdos dessa disciplina