GESP C++ 6级 2025.03
在面向对象编程中,类是一种重要的概念。下面关于类的描述中,不正确的是( )。
类是一个抽象的概念,用于描述具有相同属性和行为的对象集合。
类可以包含属性和方法,属性用于描述对象的状态,方法用于描述对象的行为。
类可以被实例化,生成具体的对象。
类一旦定义后,其属性和方法不能被修改或扩展。
哈夫曼编码是一种数据压缩算法。以下关于哈夫曼编码的描述中,不正确的是( )。
哈夫曼编码是一种变长编码,频率高的字符使用较短的编码,频率低的字符使用较长的编码。
在构造哈夫曼树时,频率越低的字符离根节点越近,频率越高的字符离根节点越远。
哈夫曼编码的生成过程基于贪心算法,每次选择频率最低的两个节点进行合并。
哈夫曼编码是一种前缀编码,任何一个字符的编码都不会是另一个字符编码的前缀,因此可以实现唯一解码。
以下代码实现了树的哪种遍历方式?
void traverse(TreeNode* root) {
if (root == nullptr) return;
cout val left);
traverse(root->right);
}
前序遍历
中序遍历
后序遍历
层次遍历
以下关于完全二叉树的代码描述,正确的是( )。
bool isCompleteTree(TreeNode* root) {
if (root == nullptr) return true;
queue q;
q.push(root);
bool hasNull = false;
while (!q.empty()) {
TreeNode* node = q.front();
q.pop();
if (node == nullptr) {
hasNull = true;
} else {
if (hasNull) return false;
q.push(node->left);
q.push(node->right);
}
}
return true;
}
该代码用于判断一棵树是否为满二叉树
该代码用于判断一棵树是否为完全二叉树
该代码用于判断一棵树是否为二叉搜索树
该代码用于计算树的高度
以下代码实现了二叉排序树的哪种操作?
TreeNode* op(TreeNode* root, int val) {
if (root == nullptr) return new TreeNode(val);
if (val val) {
root->left = op(root->left, val);
} else {
root->right = op(root->right, val);
}
return root;
}
查找
插入
删除
遍历
给定字符集 的出现频率分别为 ,则正确的哈夫曼编码是( )。
关于动态规划的描述,正确的是( )。
动态规划算法的时间复杂度总是低于贪心算法。
动态规划要求问题必须具有最优子结构和重叠子问题两个性质。
动态规划通过递归实现时不需要存储中间结果。
动态规划的核心思想是将问题分解为互不重叠的子问题。
以下代码中,类的构造函数被调用了( )次。
class MyClass {
public:
MyClass() {
cout << "Constructor called!" << endl;
}
};
int main() {
MyClass obj1;
MyClass obj2 = obj1;
return 0;
}
以下代码实现了循环队列的哪种操作?
class CircularQueue {
int* arr;
int front, rear, size;
public:
CircularQueue(int k) {
size = k;
arr = new int[k];
front = rear = -1;
}
bool enQueue(int value) {
if (isFull()) return false;
if (isEmpty()) front = 0;
rear = (rear + 1) % size;
arr[rear] = value;
return true;
}
};
入队
出队
查看队首元素
判断队列是否为空
以下代码实现了二叉树的深度优先搜索(DFS),并统计叶子结点的数量,则横线上应填写( )。
int countLeafNodes(TreeNode* root) {
if (root == nullptr) return 0;
stack s;
s.push(root);
int count = 0;
while (!s.empty()) {
TreeNode* node = s.top();
s.pop();
if (node->left == nullptr && node->right == nullptr) {
count++;
}
if (node->right) s.push(node->right);
________________// 在此处填入代码
}
return count;
}
if (node->left) s.push(node->left);
if (node->left) s.pop(node->left);
if (node->left) s.front(node->left);
if (node->left) s.push(node->right);
