力扣解法汇总515-在每个树行中找最大值

 目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

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

示例1:

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

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

提示:

二叉树的节点个数的范围是 [0,104]
-231 <= Node.val <= 231 - 1

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

解题思路:

* 解题思路:
* 用list记录每一次层级最大的值。对TreeNode进行递归遍历,传入值为层级/节点和list。

代码:

public class Solution515 {

    public List largestValues(TreeNode root) {
        List list = new ArrayList<>();
        if (root == null) {
            return list;
        }
        search(0, root, list);
        return list;
    }

    private void search(int level, TreeNode node, List list) {
        if (list.size() <= level) {
            list.add(node.val);
        } else {
            list.set(level, Math.max(list.get(level), node.val));
        }

        if (node.left != null) {
            search(level + 1, node.left, list);
        }
        if (node.right != null) {
            search(level + 1, node.right, list);
        }
    }
}

你可能感兴趣的:(LeetCode编程题解法汇总,大数据)