码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2021-06-18 19:10:47      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ret   link   while   val   lis   style   pre   roo   二叉树   

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

示例:

输入:

1
/ \
3 2
/ \ \
5 3 9

输出: [1, 3, 9]

解法一:宽度优先搜索

List<Integer> res = new ArrayList<>();

    public List<Integer> largestValues(TreeNode root) {
        Queue<TreeNode> queue = new LinkedList<>();
        if (root == null)
            return res;
        queue.add(root);
        while (!queue.isEmpty()) {
            int size = queue.size();
            int max = Integer.MIN_VALUE;
            while (size > 0) {
                TreeNode node = queue.poll();
                max = Math.max(max, node.val);
                if (node.left != null)
                    queue.add(node.left);
                if (node.right != null)
                    queue.add(node.right);
                size--;
            }
            res.add(max);
        }
        return res;
    }

 

时间复杂度:O(N)

空间复杂度:O(N)

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

标签:ret   link   while   val   lis   style   pre   roo   二叉树   

原文地址:https://www.cnblogs.com/xiaoming521/p/14897178.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!