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], ]
思路:LinkedList模拟队列+ArrayList
1.根节点放入队列
2.取队列头节点的值放入ArrayList集合
3.从上到下add到ArrayList<ArrayList<Integer>>集合的头
code:
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
ArrayList<ArrayList<Integer>>bottom=new ArrayList();
if(root==null)
return bottom;
Queue<TreeNode>queue=new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
ArrayList<Integer>list=new ArrayList();
int size=queue.size();
for(int i=0;i<size;i++){
TreeNode temp=queue.poll();
list.add(temp.val);
if(temp.left!=null)
queue.add(temp.left);
if(temp.right!=null)
queue.add(temp.right);
}
bottom.add(0,list);
}
return bottom;
}
}