leetcode 515. 在每个树行中找最大值

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

示例:

输入:

1
/ \
3 2
/ \ \
5 3 9

输出: [1, 3, 9]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

采用层序遍历树,用两个队列来记录,用一个max来记录每一层的最大值。

    public List<Integer> largestValues(TreeNode root) {
        List<Integer> list = new ArrayList<>();
        if (root == null) {
            return list;
        }
        Queue<TreeNode> a = new ArrayDeque<>();
        Queue<TreeNode> b = new ArrayDeque<>();
        a.add(root);
        while (!a.isEmpty() ) {
            int max = Integer.MIN_VALUE;
            while (!a.isEmpty()) {
                TreeNode poll = a.poll();
                max = Math.max(max, poll.val);
                if (poll.left != null) {
                    b.add(poll.left);
                }
                if (poll.right != null) {
                    b.add(poll.right);
                }
            }
            list.add(max);
            a = b;
            b = new ArrayDeque<>();
        }
        return list;
    }

posted @ 2021-05-11 14:30  旺仔古李  阅读(55)  评论(0)    收藏  举报