GESP 六级 · GESP 202312 C++ 六级 第 5 题

选择题 · 答案 B

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

题目

基于第 4 题的定义,有关下面 C++ 代码的说法正确的是( )。

void Order(BiNode* bt) {
    if (bt == nullptr)
        return;
    else {
        cout << bt->data;
        Order(bt->lchid);
        Order(bt->rchid);
    }
}
答案:B

解题思维

拿到题别急着背术语,直接盯住 cout 的位置——根节点先输出,后面跟着左子树、右子树,这就是前序遍历的典型特征,代码里根在递归调用前,答案自然选 B。

常见错误

学生最容易把‘先根’和‘中序’搞混,因为中序也是先处理左子树再处理根,但中序的根是在中间输出的,而这里根在最前面,所以 A 错;还有人看到递归里有 lchid 就以为是在做中序遍历,其实递归顺序才是关键,代码里先 cout 再递归左再递归右,完全不符合中序的左根右顺序,C 项偷换概念把根挪到左子树后,明显与代码不符;D 项更是把后序的左右根顺序颠倒成左右后根,代码里根在括号外早就输出了,所以 D 也错。

详细解析(节选)

【考点】二叉树遍历|递归调用顺序|前序/中序/后序定义

1. 考纲定位

本题考查《GESP 考试大纲》六级模块中的二叉树遍历知识点。命题人故意混淆前序、中序、后序的定义,用代码顺序卡住只会背术语的考生——他们看到“先根”就以为是中序,看到“先左”就以为是后序,完全没读过递归调用顺序。

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