Leetcode: Binary Tree Level Order Traversal II 理解分析
2014-04-22 18:55
375 查看
题目大意:给定一个二叉树,输出二叉树从最底层到根节点的层序遍历,即从左到右,一层一层从叶子到根的遍历。
理解:与Binary Tree Level Order Traversal(http://blog.csdn.net/blog_szhao/article/details/23860125)不同的是,本题要求逆序输出遍历的每一层,即由叶子层到根节点层。
实现:
理解:与Binary Tree Level Order Traversal(http://blog.csdn.net/blog_szhao/article/details/23860125)不同的是,本题要求逆序输出遍历的每一层,即由叶子层到根节点层。
实现:
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ public class Solution { private ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); private ArrayList<Integer> arr;// = new ArrayList<Integer>(); public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) { if(root == null) return res; if(root.left == null && root.right == null) { arr = new ArrayList<Integer>(); arr.add(root.val); res.add(arr); return res; } Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); int visit = 1, nextVisit = 0; while(!queue.isEmpty()) { TreeNode p = queue.peek(); arr = new ArrayList<Integer>(); while(visit > 0 && p != null) { arr.add(p.val); queue.poll(); if(p.left != null) { nextVisit ++; queue.offer(p.left); } if(p.right != null) { nextVisit ++; queue.offer(p.right); } if(!queue.isEmpty()) p = queue.peek(); visit --; } res.add(0, arr); // 新元素插在首位,逆序 if(nextVisit == 0) break; visit = nextVisit; nextVisit = 0; } return res; } }
相关文章推荐
- Leetcode: Binary Tree Zigzag Level Order Traversal 理解分析
- Leetcode: Binary Tree Level Order Traversal 理解分析
- Leetcode Binary Tree Level Order Traversal II
- LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
- [leetcode]Binary Tree Level Order Traversal II
- leetcode 107 Binary Tree Level Order Traversal II
- leetcode Binary Tree Level Order Traversal II
- [LeetCode 107] Binary Tree Level Order Traversal II
- leetcode-Binary Tree Level Order Traversal II
- leetcode_question_107 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[Tree]: Binary Tree Level Order Traversal II
- 【leetcode】Binary Tree Level Order Traversal II
- leetcode Binary Tree Level Order Traversal II
- Java for LeetCode 107 Binary Tree Level Order Traversal II
- LeetCode 107 Binary Tree Level Order Traversal II