Ir ao conteúdo

C Problemas com a recursividade


Ir à solução Resolvido por isrnick,

Posts recomendados

Postado

Ola, boa noite pessoal. vocês poderiam me explicar como funciona a recursividade dessa função?? Ela serve para caminhar por uma arvore binaria e imprimir (esquerda, raiz, esquerda) in order. Mas eu nao entendo como funciona a recursividade dela. E o caminhamento pela direita nao deveria haver um printf tambem?? E o "return", por que esta vazio??

 

void Central(TipoApontador p){
	if(p == NULL) return;
	Central(p−>Esq);
	printf("%ld \n", p−>Reg.Chave);
	Central(p−>Dir);
}

 

Postado

O return está sem nada porque essa função não retorna nada, ela é do tipo void. No if se o p não existe simplesmente retona sem fazer nada dentro da função.

 

No printf ele não tá imprimindo o p da esquerda nem o da direita, ele tá imprimindo o Reg.Chave do p atual da função. Ele só precisa imprimir o p atual 1 vez, logo não precisa ter outro printf.

 

Mas observe que ele entra em todos a esquerda antes de imprimir qualquer p, logo o primeiro p impresso será o p mais a esquerda possível.

 

Se ainda estiver com dúvida, tente fazer uma árvore pequena num papel e fazer um "teste de mesa".

Postado

@isrnick Cara, obrigado pela resposta, mas o que eu nao entendi é na parte recursiva mesmo, como ele vai para a direita na arvore?? Quando ele chega na folha mais a esquerda, como a função verifica as folhas a direita??

  • Solução
Postado

Ele vai entrando a esquerda, até tentar entrar novamente e não existir mais nada, nesse caso ele apenas retorna como mencionei acima, quando retornou ele finalmente imprime o Reg.Chave do último p válido encontrado, e aí entra a direita...

 

Como falei o melhor método pra entender é você fazer o "teste de mesa" no papel para visualizar.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!