【LeetCode】Binary Tree Level Order Traversal II
来源:互联网 发布:程序员需要学英语吗 编辑:程序博客网 时间:2024/06/01 10:19
题目
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]]
解答和Binary Tree Level Order Traversal类似,只是将它的结果翻转而已,代码如下:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> ret=new ArrayList<List<Integer>>(); dfs(root,0,ret); List<List<Integer>> result=new ArrayList<List<Integer>>(); //将List翻转 for(int i=ret.size()-1;i>=0;i--){ result.add(ret.get(i)); } return result; } //分层遍历-递归 private static void dfs(TreeNode root,int level,List<List<Integer>> ret){ if(root==null){ return; } //添加一个新的ArrayL表示新的一层if(level>=ret.size()){ret.add(new ArrayList<Integer>());}ret.get(level).add(root.val); //把节点添加到表示那一层的ArrayList里dfs(root.left,level+1,ret); //递归处理下一层的左子树和右子树 dfs(root.right,level+1,ret); }}//迭代法:public List<List<Integer>> levelOrderBottom(TreeNode root){List<List<Integer>> result=new ArrayList<List<Integer>>();if(root==null){return result;}Queue<TreeNode> queue=new LinkedList<TreeNode>();queue.add(root);List<List<Integer>> list=new ArrayList<List<Integer>>();List<Integer> item=new ArrayList<Integer>();int currentLevel=1;int nextLevel=0;while(!queue.isEmpty()){TreeNode cur=queue.remove();currentLevel--;item.add(cur.val);if(cur.left!=null){queue.add(cur.left);nextLevel++;}if(cur.right!=null){queue.add(cur.right);nextLevel++;}if(currentLevel==0){list.add(item);item=new ArrayList<Integer>();currentLevel=nextLevel;nextLevel=0;}}//翻转listfor(int i=list.size()-1;i>=0;i--){result.add(list.get(i));}return result;}
---EOF---
0 0
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Level Order Traversal II
- LeetCode Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal II
- [Leetcode]Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- LeetCode-Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- LeetCode | Binary Tree Level Order Traversal II
- LeetCode - Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- android touch scroll fling event 测试
- 源码编译,添加三方jar包的方法
- C#不规则窗体
- JQueryEasyUI学习笔记(十)datagrid 添加、修改、删除
- 解决jar包冲突的问题
- 【LeetCode】Binary Tree Level Order Traversal II
- JS:checkbox 全选及传值相关
- pc 端区间滑块
- 19.Swift-类型嵌套
- 运行Java程序批处理bat
- Linux chmod、chown命令
- Android倒计时电子钟的实现(上篇)
- MIPS 平台 Android 移植过程记录2_kernel升级 (2.6.29.4 -> 3.0.72)
- CKEditor 3.6.2配置