题目要求
返回二叉树中每行最大的数,看个例子。
思路分析
实际上就是二叉树的层序遍历问题(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^31for(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;}
};