leetcode 515. Find Largest Value in Each Tree Row (寻找树中每行最大的数)

题目要求

返回二叉树中每行最大的数,看个例子。
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;
    }
};