[LeetCode]Binary Tree Vertical Order Traversal
2015-12-06 03:04
459 查看
用了treemap来维护左右关系,其实也可以不用,记录一个min的index就好。
public class Solution { public List<List<Integer>> verticalOrder(TreeNode root) { List<List<Integer>> result = new ArrayList<List<Integer>>(); if (root == null) { return result; } HashMap<TreeNode, Integer> map1 = new HashMap<TreeNode, Integer>(); TreeMap<Integer, List<Integer>> map2 = new TreeMap<Integer, List<Integer>>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); map1.put(root, 0); while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { TreeNode node = queue.poll(); int index = map1.get(node); List<Integer> list = map2.containsKey(index) ? map2.get(index) : new ArrayList<Integer>(); list.add(node.val); map2.put(index, list); if (node.left != null) { queue.offer(node.left); map1.put(node.left, index - 1); } if (node.right != null) { queue.offer(node.right); map1.put(node.right, index + 1); } } } Iterator<Integer> it = map2.keySet().iterator(); while (it.hasNext()) { result.add(map2.get(it.next())); } return result; } }
相关文章推荐
- js中取整问题
- spring之使用Spring Security实现权限管理
- maven基本知识整理
- QQ输入法个人设置
- 一个简单的aJax——后台用servlet技术
- Linux中的kill命令
- hadoop2.4.1伪分布式安装
- [hdu3507 Print Article]斜率优化dp入门
- iOS-Echarts------定制性高的图表控件
- TextWatcher的使用
- Hibernate之悲观锁与乐观锁
- UNITY贝塞尔曲线Bezier的一个细节
- ubuntu 输入法 引发的 循环登录问题
- multiwan 脚本
- Linux -- opensuse终端命令行
- 网络请求数据(同步POST,异步POST)
- 网络请求数据(同步GET,异步GET)
- Centos 7.0 安装nginx
- 真机测试有帮助
- LibGDX_4.4: 演员 与 舞台 的 事件处理