题目描述(难度中等)
您需要在二叉树的每一行中找到最大的值。
示例:
输入:
1
/
3 2
/
5 3 9
输出: [1, 3, 9]
解题思路
利用广度优先搜索找到每一层的所有数字,将其中最大的数字存在结果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) {
vector<int> res;
if(root==NULL)//边界情况
return res;
queue<TreeNode*> q;
q.push(root);//根节点压栈
while(!q.empty())
{
int size=q.size();//广度优先中每一层的节点数
int temp=INT_MIN;//保存这一层中的最大值
for(int i=0;i<size;i++)
{
TreeNode* t=q.front();
q.pop();
temp=max(temp,t->val);
if(t->left)//将左右子树压栈,为下一层搜索做准备
q.push(t->left);
if(t->right)
q.push(t->right);
}
res.push_back(temp);//将本层最大的数字存到结果中
}
return res;
}
};
提交结果: