Alternativa A - p->right = new TNODE(el)
Análise da Questão
Esta questão aborda a manipulação de ponteiros em estruturas de dados, especificamente em árvores binárias implementadas com nós encadeados (geralmente em C++ ou linguagens similares).
Para entender a resposta correta, precisamos analisar o objetivo solicitado pelo enunciado:
- O ponteiro p já aponta para um nó existente na árvore.
- Deve-se criar um novo nó contendo o elemento el.
- Esse novo nó deve ser conectado como filho direito do nó atual.
Comportamento das Instruções
Vamos examinar a lógica por trás da sintaxe utilizada nas opções:
- Sintaxe de Acesso:
p->right acessa o membro right (filho direito) do objeto apontado por p. - Alocação de Memória:
new TNODE(...) cria uma nova instância da classe TNODE na memória dinâmica.
| Opção | Código | Análise |
|---|
| A | p->right = new TNODE(el) | Correta. Aloca um novo nó com dado el e atribui seu endereço ao campo right do nó atual. |
| B | p = new TNODE(...) | Incorreta. Reatribui o ponteiro p a um novo nó, desvinculando-o da estrutura original. |
| C | p->right = new Object(el) | Incorreta. A classe usada em árvores é tipicamente TNODE, não genérica Object. |
| D | p->right = new TNODE(el, p->left, p->right) | Incorreta. Passa os filhos atuais de p como filhos do novo nó, criando uma estrutura circular ou duplicada indevidamente. |
| E | p = new TNODE(el) | Incorreta. Substitui o nó apontado por p, perdendo a referência à raiz/subestrutura anterior. |
Conclusão Lógica
A instrução necessária deve modificar apenas o ponteiro interno do nó atual (p) sem alterar o próprio ponteiro p. Portanto, a sintaxe padrão para adicionar um filho direito é atribuir um novo objeto ao campo right:
p \rightarrow right = \text{new } TNODE(el)
Isso garante que a árvore seja expandida corretamente mantendo a integridade dos links existentes.
Alternativa A.