GESP C++ 真题 · 逐题精解
首页C++六级真题 › 2026年6月 › 第6题

GESP 2026年6月 C++六级 单选题 第6题

C++六级单选题2026年6月第6题

所属知识点:队列与循环队列 难度要求:— 考频:—

以下函数 check() 对二叉树做层序遍历,一旦遇到空节点就置 hasNull=true,之后若再遇到非空节点立即返回 false。它用于判断一棵二叉树是否为( )。
bool check(TreeNode* root) {
    if (!root) return true;
    queue<TreeNode*> q;
    q.push(root);
    bool hasNull = false;
    while (!q.empty()) {
        TreeNode* cur = q.front(); q.pop();
        if (cur == nullptr) {
            hasNull = true;
        } else {
            if (hasNull) return false;
            q.push(cur->left);
            q.push(cur->right);
        }
    }
    return true;
}

正确答案:B

题目解析
层序遍历中,完全二叉树的节点必须「前面排满、空节点只能出现在末尾」。该函数正是检测「遇到空之后还出现非空就不合法」,这就是完全二叉树的判定,选 B。💡 完全二叉树:层序看,空节点之后不能再有实节点。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习