Computação Múltipla Escolha

Suponha que o método numNodes() é definido por: Quais das instruções seguintes poderia substituir <code>, correctamente, no referido método?

Suponha que o método numNodes() é definido por:

1 // Devolve o número de nós na árvore
2
3 template<typename T>
4 public int TNODE<T>::numNodes(TNODE<T>*tree)
5 {
6  if (tree == NULL)
7   return 0;
8  else
9  {
10   <code>
11  }
12 }

Quais das instruções seguintes poderia substituir <code>, correctamente, no referido método?

  1. Nenhuma
  2. Apenas I
  3. Apenas II
  4. Apenas III
  5. Apenas I e II

Resolução completa

Explicação passo a passo

B
Alternativa B

Alternativa B

O problema apresenta um método recursivo em C++ para contar o número de nós em uma árvore binária. A lógica correta para calcular o tamanho de uma árvore é somar o nó atual (raiz da subárvore) com os nós das subárvores esquerda e direita.

Análise das Instruções

Para resolver a questão, precisamos verificar qual instrução preenche corretamente a lacuna <código> dentro do bloco else, onde tree não é nulo.

  • Instrução I:
    return 1 + numNodes(tree->left) + numNodes(tree->right);

Esta opção está correta. Ela conta o nó atual (1) e soma recursivamente o resultado dos chamados nas subárvores esquerda (tree->left) e direita (tree->right). A fórmula geral é:
\text{Total} = 1 + \text{Esquerda} + \text{Direita}

  • Instrução II:
    return numNodes(tree) + numNodes(tree->left) + numNodes(tree->right);

Esta opção está incorreta. Ao chamar numNodes(tree) novamente sem alterar o ponteiro ou a condição de parada, cria-se uma recursão infinita, resultando em estouro de pilha (stack overflow), pois a função chama a si mesma indefinidamente.

  • Instrução III:
    return numNodes(tree->left) + numNodes(tree->right);

Esta opção está incorreta. Ela soma apenas as subárvores, ignorando o nó raiz da chamada atual. Isso faria com que o contador ficasse sempre inferior ao valor real por exatamente 1 unidade (para cada nó visitado no topo da pilha).

Conclusão

Apenas a instrução I implementa a lógica correta de contagem de nós em uma estrutura de árvore recursiva. Portanto, a alternativa correta é a que indica "Apenas I".

Alternativa B

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Computação

Ver mais Computação resolvidas

Tem outra questão de Computação?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.