Geral
Estruturas de Dados
Semana 5
0
Questão
Considere a implementação da função destroyTree em uma árvore binária de busca para destruir todos os nós da árvore utilizando o caminhamento pós-ordem. O código a seguir mostra a definição da classe BinarySearchTree com o método destroyTree:
class BinarySearchTree {
private:
struct TreeNode {
Aluno aluno;
TreeNode* left;
TreeNode* right;
TreeNode(const Aluno& aluno) : aluno(aluno), left(nullptr), right(nullptr) {}
};
TreeNode* root;
void destroyTree(TreeNode* node) {
if (node == nullptr) {
return;
}
destroyTree(node->left);
destroyTree(node->right);
std::cout << "Deletando nó com RA: " << node->aluno.getRA() << std::endl;
delete node;
}
public:
BinarySearchTree() : root(nullptr) {}
~BinarySearchTree() {
destroyTree(root);
}
};
Com relação ao funcionamento do método destroyTree, observe as afirmativas a seguir:
Está correto o que se afirma em:
class BinarySearchTree {
private:
struct TreeNode {
Aluno aluno;
TreeNode* left;
TreeNode* right;
TreeNode(const Aluno& aluno) : aluno(aluno), left(nullptr), right(nullptr) {}
};
TreeNode* root;
void destroyTree(TreeNode* node) {
if (node == nullptr) {
return;
}
destroyTree(node->left);
destroyTree(node->right);
std::cout << "Deletando nó com RA: " << node->aluno.getRA() << std::endl;
delete node;
}
public:
BinarySearchTree() : root(nullptr) {}
~BinarySearchTree() {
destroyTree(root);
}
};
Com relação ao funcionamento do método destroyTree, observe as afirmativas a seguir:
- O método destroyTree utiliza o caminhamento pré-ordem para deletar os nós da árvore.
- O método destroyTree é chamado recursivamente para deletar todos os nós da árvore.
- O método destroyTree deleta primeiro os nós das subárvores esquerda e direita antes de deletar o nó atual.
- O método destroyTree é invocado automaticamente pelo destrutor da classe BinarySearchTree.
- O método destroyTree não imprime nenhuma mensagem durante a destruição dos nós.
Está correto o que se afirma em: