09_每个行中找最大值

在每个树行中找最大值

给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。

示例1:

img

输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]

示例2:

输入: root = [1,2,3]
输出: [1,3]
class Solution {
    public List<Integer> largestValues(TreeNode root) {
        List<Integer> resList = new ArrayList<>();
        if (root == null)  return resList;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            int levelSize = queue.size();
            int max = Integer.MIN_VALUE;  //使用Integer下的最小值做为初始化
            for (int i = 0; i < levelSize; i++) {
                TreeNode tmp = queue.poll();
                max = Math.max(max, tmp.val);  //Math函数做一个比较,两者中的最大值
                if (tmp.left != null)  queue.add(tmp.left);
                if (tmp.right != null)  queue.add(tmp.right);
            }
            resList.add(max);   //将每一行的最大值加入到resList列表中
        }
        return resList;
    }
}

[总结]

这道题仍然是建立在层次遍历的基础上的,在最大值的比较上没有用到Max函数,没有想到用Math.max()函数最终导致题目没有做出来。

posted @ 2023-11-23 10:39  鲍宪立  阅读(9)  评论(0编辑  收藏  举报