一、题目描述:You need to find the largest value in each row of a binary tree.
二、思路:BFS搜索整棵树,用队列存储树的节点,从第一行(即根节点)开始,每读取本行节点的子节点时,只要非空就将子节点加入队列,同时记录下一行的非空子节点的个数,这样在遍历子节点该行的时候,就明确从队列中取出多少个节点进行比较他们的val值。遍历同一行的树节点时,将他们的val值存入vector中,然后排序取出最大值作为该行的代表加入到输出的vector中即可。
三、实现
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector<int> largestValues(TreeNode* root) {
queue<TreeNode*> que;
int count = 1;
vector<int> vec;
if(root==NULL) return vec;
que.push(root);
while(!que.empty()){
int n=count;
count =0;
vector<int> v;
for(int i=0;i<n;i++){
TreeNode* temp = que.front();
que.pop();
if(temp->left!=NULL) {que.push(temp->left);count++;}
if(temp->right!=NULL) {que.push(temp->right);count++;}
v.push_back(temp->val);
}
sort(v.begin(),v.end());
vec.push_back(v[v.size()-1]);
}
return vec;
}
};