Olá pessoal, sou o Filipe Névola, este blog foi muito ativo durante 2009 enquanto eu fazia universidade,
hoje em dia estou ativo no Twitter @FilipeNevola e voltando a escrever posts agora no meu perfil do Medium (29/05/2016).

[ 26/07/2009 ] 2

POSCOMP 2002 Q36 - Estrutura de Dados - Árvore Binária

Questão 36 Uma árvore binária é declarada em C como:

typedef struct no *apontador;
struct no{
    int valor;
    apontador esq, dir;
};

onde esq e dir representam ligações para os filhos esquerdo e direito de um nó da árvore, respectivamente.

Qual das seguintes alternativas é uma implementação correta da operação que inverte as posições dos filhos esquerdo e direito de um nó p da árvore, onde t é um apontador auxiliar.

a) t = p;
p->esq = p->dir;
p->dir = p->esq;

b) p->dir = t;
p->esq = p->dir;
p->dir = t;

c) p->esq = p->dir;
t = p->esq;
p->dir = t;

d) t = p->dir;
p->esq = p->dir;
p->dir = t;

e) t = p->dir;
p->dir = p->esq;
p->esq = t;

Gabarito: e (Selecione o texto a esquerda para ver a resposta ou consulte o fim do post).

Explicação: Nossa explicação será através de uma ilustração. Vamos ilustrar as operações da alternativa e.

Começaremos com um ponteiro vermelho representando p->esq e um ponteiro azul representando p->dir e teremos o ponteiro verde que representará o t. E o nosso objetivo será colocar o vermelho aonde está o azul e vice-versa, se através dessas operações conseguirmos fazer isto significa que invertemos o filho esquerdo com o direito e estas operações são as corretas.

Então vamos tentar:



Após a execução das 3 operações da alternativa e alcançamos o nosso objetivo.

Não concorda? 
Comente, opine e demonstre seu conhecimento!

Gabarito: e
Mauro comentou:

Muito legal essa 'série' do PósComp Filipe, parabéns!

Filipe Névola comentou:

@Mauro, obrigado, assine nosso feed e fique atento nas novas questões! =]

Novo Comentário