思路:用队列对二叉树进行层序遍历,每一层用一个
maxVal
变量来存当前层的最大值,每遍历完一层就把当前层的最大值存入结果数组中。
class Solution {
public:
vector<int> largestValues(TreeNode* root) {
vector<int> res;
if (root == nullptr) return res;
queue<TreeNode*> q;
q.push(root);
while (!q.empty())
{
int size = q.size();
int maxVal = INT_MIN; //要求最大值,所以初始化为最小
while (size -- )
{
TreeNode* t = q.front();
q.pop();
if (t->left) q.push(t->left);
if (t->right) q.push(t->right);
maxVal = max(maxVal, t->val); //更新最大值
}
res.push_back(maxVal); //当前层已遍历完毕,存入当前层最大值
}
return res;
}
};