You need to find the largest value in each row of a binary tree.
Example:
Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, 3, 9]
题目:依旧还是二叉树的层次遍历衍生出来的题,要求的是每层中的最大值,最后返回一个vector
思路:在二叉树的层次遍历中,主要是获得一层的vector,那么求最大值就不是什么难事了。我的代码没什么改动,先获得二叉树层次遍历的vector<vector<int> >res,再遍历res,取res[i]中的最大值即可。
代码:
class Solution {
public:
vector<int> levelOrder(TreeNode* root) {
vector<vector<int> > res; //记录二叉树层次遍历的二维vector
vector<int> ret;
queue<TreeNode*> q;
if(root==NULL)
return ret;// 若为空,直接返回
q.push(root);
while(!q.empty()){
vector<int> lvl;
int size=q.size();
for(;size>0;size--){
TreeNode* node=q.front();
lvl.push_back(node->val);
q.pop();
if(node->left)
q.push(node->left);
if(node->right)
q.push(node->right);
}
res.push_back(lvl);
}
for(int i=0;i<res.size();i++) //最后的结果,取res[i]的最大值
ret.push_back(*max_element(res[i].begin(),res[i].end()));
return ret;
}
};
AC beats 98%