在每个树中找最大值

原题:

您需要在二叉树的每一行中找到最大的值。

示例:

  1. 输入:
  2. 1
  3. / \
  4. 3 2
  5. / \ \
  6. 5 3 9
  7. 输出: [1, 3, 9]

解题方法:

解法一:

class Solution {
public:
    vector<int> largestValues(TreeNode* root) {
        if(!root) return {};
        vector<int> res;
        queue<TreeNode*> que;
        que.push(root);
        while(!que.empty())
        {
            int maxval=INT_MIN;        
            int size=que.size();     
            for(int i=0;i<size;i++)
            {
                TreeNode* node=que.front();
                maxval=max(maxval,node->val);
                que.pop();
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
            }
            res.push_back(maxval);
        }
        return res;
    }
};

做题小结:

简单的层序遍历,需要注意的是使用max函数必须要输入两个int类型的值,long都不行。

另外需要注意的就是使用INTMAX和INT___MIN来赋最大值最小值,如果简单用0,可能会出现负数的情况