唯一和上一个题不同的就是要倒序输出层,从底层开始。只需要改一个小地方就是最后将每层list add到大list时候,用add(0,list),即add到第一位。
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
Queue<TreeNode> que = new LinkedList<TreeNode>();
List<List<Integer>> ans = new ArrayList<List<Integer>>();
if(root == null)
return ans;
que.offer(root);
while( !que.isEmpty()){
int num = que.size();
List<Integer> list = new ArrayList<Integer>();
for( int i = 0; i < num; i++ ){
if(que.peek().left!= null)
que.offer(que.peek().left);
if(que.peek().right != null)
que.offer(que.peek().right);
list.add(que.poll().val);
}
ans.add(0,list);
}
return ans;
}
}