如果已经做过二叉树的层序遍历这题,那么这题其实也是差不多的思路,我们通过一个BFS,在过程中记录下每一层的最大值,并将其记录保存下来即可。AC代码如下:
class Solution {
public:
vector<int> largestValues(TreeNode* root) {
vector<int> ans;
if(root == nullptr) {
return ans;
}
queue<TreeNode*> que;
que.push(root);
while(!que.empty()) {
int maxx = que.front()->val;
int n = que.size();
for(int i=0;i<n;i++) {
TreeNode* node = que.front();
maxx = max(maxx, node->val);
que.pop();
if(node->left != nullptr) {
que.push(node->left);
}
if(node->right != nullptr) {
que.push(node->right);
}
}
ans.push_back(maxx);
}
return ans;
}
};