Missão do Guardião

Em um reino distante chamado Floresta de Galdoria Antiga, existe uma mágica e gigantesca árvore. Esta árvore é especial pois seus galhos formam uma complexa estrutura binária, conhecida como “Árvore Binária da Vida”. As folhas dessa árvore são extremamente valiosas, cada uma contendo um segredo da natureza. A rainha do reino, preocupada com a saúde da Árvore da Vida, convoca o Guardião das Árvores para uma importante missão: contar o número de folhas que a árvore possui.

Uma folha, na Árvore da Vida, é um galho que não se ramifica mais, ou seja, é um galho que não possui filhos, nem à esquerda, nem à direita.

Assim, o Guardião deve reportar à rainha um único número inteiro que representa a quantidade de folhas na Árvore da Vida. Para ajudá-lo, ele convocou você, um experiente programador do Departamento de Estrutura de Dados do reino. Ajude o Guardião das Árvores a escrever uma função que busque as folhas da árvore e contabilize-as.

Sua tarefa nesse exercício é implementar uma função que retorne a quantidade de folhas de uma árvore binária com raiz r. Para tanto, você deve submeter um arquivo contendo apenas:

  1. Os #include necessários para execução das instruções utilizadas no seu código.

  2. A definição da struct no.

typedef struct no {
   int chave;
   struct no *esq, *dir;
} no;
  1. Uma função que retorna a quantidade de folhas xx da árvore binária. O protótipo desta função deve ser:
int numero_folhas(no *r);