leetcode 515. Find Largest Value in Each Tree Row (寻找树中每行最大的数)
题目要求
返回二叉树中每行最大的数,看个例子。
思路分析
实际上就是二叉树的层序遍历问题(BFS),唯一不同的就是每一层的数值需要选出一个最大值保存下来,也很简单,通过一轮比较即可实现。这里要注意每层最大值初始化为INT_MIN,这个是整形中最小的数-2^31。以及不要忘记输入为空[ ]的时候哦!
主要代码c++
/**
* 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>result;
vector<int> largestValues(TreeNode* root) {
if(!root) return{};
queue<TreeNode*>q;
q.push(root);
while(!q.empty())
{
int size = q.size();
int max_val = INT_MIN; //c++最小的整形数,INT_MIN= -2^31
for(int i=0; i<size;++i)
{
TreeNode* tmp = q.front();
q.pop();
if(tmp->val > max_val) max_val = tmp->val;
if(tmp->left) q.push(tmp->left);
if(tmp->right) q.push(tmp->right);
}
result.push_back(max_val);
}
return result;
}
};