標籤:des style blog http color os io for
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]]
演算法思路:
典型的BFS,與[leetcode]Binary Tree Level Order Traversal完全一樣,不過一個是對list的頭插,一個是尾插法。
代碼如下:
1 public class Solution { 2 public List<List<Integer>> levelOrderBottom(TreeNode root) { 3 List<List<Integer>> res = new LinkedList<List<Integer>>(); 4 if(root == null) return res; 5 Queue<TreeNode> q = new LinkedList<TreeNode>(); 6 Queue<TreeNode> copy = new LinkedList<TreeNode>(); 7 q.offer(root); 8 res.add(new ArrayList<Integer>(Arrays.asList(root.val))); 9 while(!q.isEmpty()){10 TreeNode node = q.poll();11 if(node.left != null) copy.offer(node.left);12 if(node.right != null) copy.offer(node.right);13 if(q.isEmpty() && !copy.isEmpty()){14 List<Integer> list = new ArrayList<Integer>();15 while(!copy.isEmpty()){16 q.offer(copy.peek());17 list.add(copy.poll().val);18 }19 res.add(0,list);20 }21 }22 return res;23 }24 }