Binary Tree Level Order Traversal II I
来源:互联网 发布:金融数据分析师是什么 编辑:程序博客网 时间:2024/05/01 04:16
每日一题;
昨天有事儿,没做今天补上。
这两道题是一样的,都是把二叉树广搜,输出每层节点,一个是从下往上,一个是从上往下;
我的思路是:
1、建立一个队列(参考别人后想到的),然后把根节点放进去,
2、依次处理队列中的值,如果有左右孩子,就把左右孩子分别加到队列里面,然后把值放进当前层的列表里面;
3、在层与层之间分割的地方集,在队列中加入一个空节点,遇到空节点时,就把当前列表放进结果列表,然后在队列里面加入层分割;
4、在加入结果队列的时候,过滤一下,如果当前层列表是空的就不要加入结果队列了。
5、从上向下和从下向上只需要把当前层加入结果队列时,指定加入的index就可以了。
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7], [9,20], [3]]
public static List<List<Integer>> levelOrderTop(TreeNode root) { if(root==null) new ArrayList<List<Integer>>(); List<List<Integer>> result=new ArrayList<List<Integer>>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); TreeNode temp ; ArrayList<Integer> list = new ArrayList<Integer>(); queue.offer(root); queue.offer(null); while (queue.size()>0){ temp = queue.poll(); if(temp == null){ if(!list.isEmpty()){ queue.offer(null); result.add(list); list = new ArrayList<Integer>(); } }else { if(temp.left!=null) queue.offer(temp.left); if(temp.right!=null) queue.offer(temp.right); list.add(temp.val); } } return result; } public static List<List<Integer>> levelOrderBottom(TreeNode root) { if(root==null) new ArrayList<List<Integer>>(); List<List<Integer>> result=new ArrayList<List<Integer>>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); TreeNode temp ; ArrayList<Integer> list = new ArrayList<Integer>(); queue.offer(root); queue.offer(null); while (queue.size()>0){ temp = queue.poll(); if(temp == null){ if(!list.isEmpty()){ queue.offer(null); result.add(0,list); list = new ArrayList<Integer>(); } }else { if(temp.left!=null) queue.offer(temp.left); if(temp.right!=null) queue.offer(temp.right); list.add(temp.val); } } return result; }
0 0
- Binary Tree Level Order Traversal I & II
- Binary Tree Level Order Traversal II I
- Binary Tree Level Order Traversal I & II
- 【Leetcode】Binary Tree Level Order Traversal I/II AND Binary Tree Zigzag Level Order Traversal
- [LeetCode] Binary tree level order traversal I & II
- LeetCode题解:Binary Tree Level Order Traversal I and II
- Posts Tagged 【bfs】Binary Tree Level Order Traversal I && II
- LeetCode Binary Tree Level Order Traversal I and II
- 【LeetCode从零单刷】Binary Tree Level Order Traversal I & II
- LeetCode 之 Binary Tree Level Order Traversal I and II
- Binary Tree Level Order Traversal I II(102、107)
- LeetCode Binary Tree Level Order Traversal I.II
- LeetCode | Binary Tree Level Order Traversal I,II
- 【LeetCode】binary-tree-level-order-traversal i&ii&zigzag
- LeetCode.107 Binary Tree Level Order Traversal I&II
- LeetCode 102, 103, 107. Binary Tree Level Order Traversal i, ii, Zigzag Level Order
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- Microsoft .NET Micro Framework移植开发笔记1
- 如何把一个输入字符串转换成枚举类型
- STL7—迭代器
- JNI使用总结
- String类编译期与运行期分析
- Binary Tree Level Order Traversal II I
- Microsoft .NET Micro Framework移植开发笔记2之点灯神话
- 都焦陨膊谙犯丛洞辈镣侨醒墒簿夯
- 绿盟乌撂死怯斩牌刭壬蚊拿蜗巡哟
- 我的原创博客文章
- JSP学习笔记
- HDU 1995 汉诺塔V
- verilog-1 FPGA串口通信问题解析
- Excel Sheet Column Number