给定一个二叉树,返回每一层中最大的节点值,结果以数组形式返回,横线处应填入( )。
#include <vector>
#include <queue>
#include <algorithm>
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x): val(x), left(nullptr), right(nullptr) {}
};
vector<int> largestValues(TreeNode* root) {
vector<int> result;
if (!root) return result;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
int sz = q.size();
int maxVal = INT_MIN;
for (int i = 0; i < sz; ++i) {
________________________
maxVal = max(maxVal, node->val);
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
result.push_back(maxVal);
}
return result;
}A.
node = q.end();B.
node = q.front();C.
q.pop();
node = q.front();D.
node = q.front();
q.pop();根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】二叉树层级遍历|队列操作|BFS
本题考查《GESP 六级大纲》"数据结构与算法"模块中的二叉树遍历与队列基本操作,属于经典BFS层级遍历变体。命题人刻意将"先取后弹"的顺序拆成两个空行,卡住那些只背过"要弹要取"却记混先后顺序的考生。