GESP 六级 · GESP 202412 C++ 六级 第 11 题

选择题 · 答案 B

← 整套速查表 GESP 六级 全部真题

题目

阅读以下二叉树的深度优先搜索算法,横线上应填写( )。

void dfs(TreeNode* root) {
    if (root == nullptr)
        return;

    stack<TreeNode*> s;

    s.push(root);
    while (!s.empty()) {
        ________________________ // 在此处填入代码
        cout << node->value << " ";
        if (node->right) s.push(node->right);
        if (node->left) s.push(node->left);
    }
}
答案:B

解题思维

排列组合问题:先判断是否考虑顺序(排列P vs 组合C),再确定是否允许重复。乘法原理分步,加法原理分类。

常见错误

区分排列(考虑顺序,$P(n,m)$)和组合(不考虑顺序,$C(n,m)$)。注意特殊元素优先处理、正难则反等计数技巧。

详细解析(节选)

【考点】栈操作|迭代 DFS|语法规范

1. 🎯 考纲定位(考点定位)

本题出自 GESP 六级 C++ 算法模块,核心考查栈(stack)的基本操作与二叉树深度优先遍历的迭代实现。六级卷中此类题占比约 12%,卡住 60% 以上考生——不是 DFS 原理不懂,而是栈的接口记忆模糊,把 top 和 pop 当成无谓的组合,或者把 stack 和 queue 的 front 记混。

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断