CCF GESP 2024年12月认证 C++ 6级
二
判断题
第 1 题
构造函数是一种特殊的成员函数,构造函数的名称和类名相同。但通过函数重载,可以创建多个同名的构造函数,条件是每个构造函数的参数列表不同。
第 2 题
类的静态成员函数既能访问类的静态数据成员,也能访问非静态数据成员。
第 3 题
栈中元素的插入和删除操作都在栈的顶端进行,所以方便使用单向链表实现。
第 4 题
下面代码构建的树一定是完全二叉树:
struct TreeNode {
int value;
TreeNode* left;
TreeNode* right;
};
TreeNode* buildCompleteBinaryTree() {
TreeNode* root = new TreeNode{1};
root->left = new TreeNode{2};
root->right = new TreeNode{3};
root->left->left = new TreeNode{4};
root->left->right = new TreeNode{5};
root->right->left = new TreeNode{6};
return root;
}
第 5 题
在二叉排序树中,左子树所有节点的值都大于根节点的值,右子树所有节点的值都小于根节点的值。
第 6 题
在生成一个派生类的对象时,只调用派生类的构造函数。
第 7 题
下面的代码实现了二叉树的前序遍历,它通过递归方法访问每个节点并打印节点值。
void preorder(TreeNode* root) {
if (root == NULL) return;
cout << root->val << " ";
preorder(root->left);
preorder(root->right);
}
第 8 题
在二叉树中,宽度优先搜索算法(BFS)保证从起点到每个节点的访问路径是边数最少的路径(即最短路径)。
第 9 题
在解决简单背包问题时,动态规划的状态转移方程如下:
dp[i][w] = max(dp[i-1][w], dp[i-1][w - weights[i-1]] + values[i-1]);
该方程表示:在考虑第 $i$ 个物品时,当前背包容量为 $w$,如果不放物品 $i$,则最大价值是 $dp[i-1][w]$;如果放入物品 $i$,则最大价值是 $dp[i-1][w - weights[i-1]] + values[i-1]$,其中数组 weights 和 values 分别表示所有物品的重量和价值,数组下标从 0 开始。
第 10 题
栈中元素的插入和删除操作都在栈的顶端进行,所以方便用双向链表比单向链表更合适表实现。
判断题部分已到底了。