【LeetCode】Binary Tree Level Order Traversal II
2014-01-12 22:27
337 查看
Binary Tree Level Order Traversal II
Total Accepted: 4229 Total Submissions: 13624 My Submissions
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},
return its bottom-up level order traversal as:
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
这道题和Binary Tree Level Order
Traversal一样,只不过这个结果需要逆序一下。
也就多了几行代码而已。
Java AC
Total Accepted: 4229 Total Submissions: 13624 My Submissions
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], ]
confused what "{1,#,2,3}" means? > read more on how binary tree is serialized on OJ.
这道题和Binary Tree Level Order
Traversal一样,只不过这个结果需要逆序一下。
也就多了几行代码而已。
ArrayList<ArrayList<Integer>> newlist = new ArrayList<ArrayList<Integer>>(); int size = list.size(); for(int i = size-1; i >= 0 ; i--){ newlist.add(list.get(i)); }还是BFS吧,没什么好说的。
Java AC
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) { ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(); if(root == null){ return list; } bfs(root,list); ArrayList<ArrayList<Integer>> newlist = new ArrayList<ArrayList<Integer>>(); int size = list.size(); for(int i = size-1; i >= 0 ; i--){ newlist.add(list.get(i)); } return newlist; } public void bfs(TreeNode root,ArrayList<ArrayList<Integer>> list){ Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); while(!queue.isEmpty()){ int size = queue.size(); ArrayList<Integer> tempList = new ArrayList<Integer>(); for(int i = 0; i < size; i++){ TreeNode point = queue.peek(); queue.poll(); tempList.add(point.val); if(point.left != null){ queue.offer(point.left); } if(point.right != null){ queue.offer(point.right); } } list.add(tempList); } } }
相关文章推荐
- android应用开发之测试-assert
- Oracle系列之七 并发与多版本控制
- C++怎样把ASCII编码转换成Unicode?
- 深入学习MongoDB
- word去除行,合并段落
- 黑马程序员-学习日志-PropertiesDemo
- 【原】MongoDB Java版驱动调用GridFS.getFileList()报错:no gridfs!解决方法
- The Earth Mover's Distance
- IOS 学习:UITableView 使用详解1
- VC POST表单——登录验证新浪邮箱
- Android重量级开发之--提高android启动速度研究
- OpenStack Cinder源码分析之七
- HDU 1051(贪心)
- android handler 机制
- Apache Flume
- socket服务端-多线程
- Switch-Case例子
- Java中实现浮点数的快速简单格式化
- 第一次android小组会
- 利用SetConsoleTextAttribute函数设置控制台颜色