515. Find Largest Value in Each Tree Row
来源:互联网 发布:linux server 版本 编辑:程序博客网 时间:2024/06/05 04:48
1.题目
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]
2.分析
这道题,考察的是树形结构以及层次遍历,层次遍历因为要找出每一层的最大值,所以需要借助于相应的容器及其特性来实现。
3.解题
我的解法:
public List<Integer> largestValues(TreeNode root) { ArrayList<Integer>list = new ArrayList<Integer>(); // 边界处理 if(root==null){ return list; } Stack<TreeNode>left = new Stack<>(); Stack<TreeNode>right = new Stack<>(); left.push(root); while(!left.isEmpty()||!right.isEmpty()){ int num = Integer.MIN_VALUE; while(!left.isEmpty()){ TreeNode node = left.pop(); if(node!=null&&node.left!=null){ right.push(node.left); } if(node!=null&&node.right!=null){ right.push(node.right); } if(node!=null&&node.val>num){ num = node.val; } if(left.isEmpty()){ list.add(num); break; } } num = Integer.MIN_VALUE; while(!right.isEmpty()){ TreeNode node = right.pop(); if(node!=null&&node.left!=null){ left.push(node.left); } if(node!=null&&node.right!=null){ left.push(node.right); } if(node!=null&&node.val>num){ num = node.val; } if(right.isEmpty()){ list.add(num); break; } } } return list;}
4.总结
我的借助了容器栈,利用两个栈保存层次遍历的结果,并在遍历过程中找出每一层遍历的最大值进行保存,最后存储到list中。看了一下别人的解法,大同小异,但是是只采用了一个队列,利用队列先进先出的特性,并会在遍历之前,计算每一层的节点数,从而遍历找出每一层最大值予以保存输出。
阅读全文
0 0
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- Find Largest Value in Each Tree Row
- LeetCode 515. Find Largest Value in Each Tree Row
- 515. Find Largest Value in Each Tree Row
- LeetCode OJ 515. Find Largest Value in Each Tree Row
- 515. Find Largest Value in Each Tree Row
- 515. Find Largest Value in Each Tree Row
- week3-NO.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
- 机器学习概要
- Android:inflate.inflate()方法
- 移动架构17_观察者模式
- 【牛客】哲学家就餐问题+进程竞争
- Hive的安装
- 515. Find Largest Value in Each Tree Row
- nyoj811变态最大值
- Mybatis绑定错误的原因
- 基础的Linux操作命令
- 华为2
- 大学生职业规划
- 自定义flume-source
- 数据结构——串—串的模式匹配算法
- new collections