LeetCode 515. Find Largest Value in Each Tree Row
来源:互联网 发布:知著投资 编辑:程序博客网 时间:2024/06/15 15:24
1.题目
题意简而言之就是求一颗二叉树的每一层最大节点,并用集合的形式将其返回。
2.思路
我的想法比较愚笨,是将此二叉树中的每一个节点标记上其所在的层数,然后在按层次标记遍历所有节点得出每一层的最大节点。其中做层次标记的时候与找最大节点时候都是用的层次遍历。
3.代码
class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val = x;}}class TreeNeuron{TreeNode t;int level;public TreeNeuron(TreeNode t,int level){this.t = t;this.level = level;}} public List<Integer> largestValues(TreeNode root) { List<Integer> listMax = new ArrayList<Integer>(); Queue<TreeNeuron> qIn = new LinkedList<TreeNeuron>();//为了确定每个节点所在层数的辅助队列 Queue<TreeNeuron> qOut = new LinkedList<TreeNeuron>();//最后比较输出的队列 if(root == null) return listMax; TreeNeuron tn = new TreeNeuron(root,1); qIn.add(tn);//根节点入队 int k ;//表示临时的层数 while(!qIn.isEmpty()){ TreeNeuron temp = qIn.poll();//出队 qOut.add(temp); k = temp.level; if(temp.t.left != null) qIn.add(new TreeNeuron(temp.t.left,k+1)); if(temp.t.right != null) qIn.add(new TreeNeuron(temp.t.right,k+1)); } k = 1;//k从第一层开始 TreeNeuron temp = qOut.poll();//出队 while(temp != null){ int max = Integer.MIN_VALUE; while(temp!=null && temp.level==k){ if(max < temp.t.val) max = temp.t.val; temp = qOut.poll(); } k++; listMax.add(max); } return listMax; }
阅读全文
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
- oracle配置database link遇到的问题一例
- 2017/9/18学习总结
- Oracle 存储过程练习小样例
- 基因组测序中N50和N90到底指什么?
- 判断浏览器
- LeetCode 515. Find Largest Value in Each Tree Row
- Cassandra 之 入门
- day16-EL&JSTL
- 引用与指针之间的故事
- Collection 线程安全
- 扎心了,老铁!mysql编码问题引发的血案
- Linux环境变量与文件查找
- 银行系统代码
- 哲学家就餐问题