leetcode 515. Find Largest Value in Each Tree Row
来源:互联网 发布:乐知小儿英语怎么样 编辑:程序博客网 时间:2024/05/17 21:57
You need to find the largest value in each row of a binary tree.Example:Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, 3, 9]
这题其实就是个广度优先搜索,一般解法是用队列
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<Integer> largestValues(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); List<Integer> res = new ArrayList<>(); if(root==null) return res; queue.add(root); queue.add(null); while(!queue.isEmpty()){ TreeNode p = queue.poll(); int max = p.val; while(p!=null){ if(p.val > max) max = p.val; if(p.left!=null) queue.add(p.left); if(p.right!=null) queue.add(p.right); p = queue.poll(); } res.add(max); if(!queue.isEmpty()) queue.add(null); } return res; }}
然而因为是每层返回一个值,可以像上一篇一样,记录下到每个节点的深度,只要在改深度上更新即可
public class Solution { public List<Integer> largestValues(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); helper(root, res, 0); return res; } private void helper(TreeNode root, List<Integer> res, int d){ if(root == null){ return; } //expand list size if(d == res.size()){ res.add(root.val); } else{ //or set value res.set(d, Math.max(res.get(d), root.val)); } helper(root.left, res, d+1); helper(root.right, res, d+1); }}
阅读全文
0 0
- LeetCode 515. Find Largest Value in Each Tree Row
- LeetCode OJ 515. Find Largest Value in Each Tree Row
- LeetCode笔记:515. Find Largest Value in Each Tree Row
- [leetcode] 515. Find Largest Value in Each Tree Row
- 【LeetCode】515. Find Largest Value in Each Tree Row
- LeetCode;515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- leetcode-515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- LeetCode 515. Find Largest Value in Each Tree Row (C++)
- leetcode 515. Find Largest Value in Each Tree Row
- LeetCode#515. Find Largest Value in Each Tree Row
- leetcode 515. Find Largest Value in Each Tree Row
- LeetCode 515. Find Largest Value in Each Tree Row
- [LeetCode] 515. Find Largest Value in Each Tree Row
- SQLServer2000中,DML语句中不能执行子查询的解决办法
- PHP内置变量如$_SERVER['DOCUMENT_ROOT'] 和 ../ 的用法
- JS变量数据类型及其特点
- 设计模式(Design Patterns)-可复用面向对象软件的基础 06:适配器模式(Adapter)
- mybatis-map传递多个参数
- leetcode 515. Find Largest Value in Each Tree Row
- Kubernetes Ingress解析
- git for
- Notification详解(含工具类)一
- Windows下mysql忘记root密码的解决方法
- Widnows窗口下的命令
- kindEditor简单用法
- IntelliJ IDEA 注册码
- Android View坐标getLeft, getRight, getTop, getBottom