Alternativa E - Apenas V
Para determinar a resposta correta, devemos analisar a lógica necessária para calcular a soma das folhas (leafSum) em uma árvore binária.
Análise Lógica do Problema
O objetivo da função é somar apenas os valores dos nós folha. Um nó folha é aquele que não possui filhos, ou seja, tanto o filho esquerdo quanto o direito são nulos.
Os requisitos para o código dentro do bloco else (onde tree não é nulo) são:
- Verificar se é folha: Ambos os filhos devem ser
NULL. - Retorno para folha: Se for folha, retorna o valor do elemento (
tree->element). - Recursão para nós internos: Se não for folha, deve chamar a função recursivamente nos filhos, mas não deve somar o valor do nó atual ao resultado.
Análise dos Fragmentos
Vamos avaliar cada opção apresentada:
- I. Incorreto: O código verifica se é folha e retorna o elemento, mas não possui um
else para tratar os nós internos. Isso causaria erro de compilação (função sem retorno) ou comportamento indefinido para nós que não são folhas. - II. Incorreto: Utiliza o operador lógico
|| (OU). Um nó só é folha se ambos os filhos forem nulos (&&). Além disso, adiciona 1 ao resultado, o que não faz sentido para a soma dos elementos. - III. Incorreto: Embora identifique corretamente as folhas com
&&, ele soma tree->element mesmo quando o nó tem filhos (else). Isso transformaria a função em uma soma de todos os nós, e não apenas das folhas. - IV. Incorreto: Assim como a II, utiliza
||. Isso faria com que qualquer nó com pelo menos um filho ausente fosse considerado folha, gerando erros lógicos. - V. Correto:
- Usa
&& para identificar corretamente as folhas. - Retorna o valor do elemento apenas nas folhas.
- Na recursão (
else), soma apenas os resultados das chamadas leafSum dos filhos, ignorando o valor do nó atual. - Como a função base trata
NULL retornando 0, chamadas recursivas em filhos inexistentes funcionam perfeitamente.
Conclusão
Somente o fragmento V implementa corretamente a lógica de soma das folhas sem incluir valores de nós internos ou utilizar condições lógicas incorretas. Portanto, a alternativa correta é a E.