Binary Tree Level Order Traversal II
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],
]
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 public class Solution { 2 public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) { 3 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>(); 4 if(root==null) return res; 5 LinkedList<TreeNode> cur = new LinkedList<TreeNode>(); 6 cur.offer(root); 7 while(!cur.isEmpty()){ 8 LinkedList<TreeNode> next = new LinkedList<TreeNode>(); 9 ArrayList<Integer> temp = new ArrayList<Integer>(); 10 for(TreeNode n:cur){ 11 temp.add(n.val); 12 if(n.left!=null) 13 next.offer(n.left); 14 if(n.right!=null) 15 next.offer(n.right); 16 } 17 cur = next; 18 res.add(temp); 19 } 20 Collections.reverse(res); 21 return res; 22 } 23 }