题目链接:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
思路很简单,就是在层次遍历的基础上做了下反转。
AC 1ms Java:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> ans=new ArrayList();
if(root==null)
return ans;
int level=0;
Queue<TreeNode> queue=new LinkedList();
queue.offer(root);
while(!queue.isEmpty()){
ans.add(new ArrayList<Integer>());
int size=queue.size();
for(int i=0;i<size;i++){
TreeNode temp=queue.poll();
ans.get(level).add(temp.val);
if(temp.left!=null)
queue.offer(temp.left);
if(temp.right!=null)
queue.offer(temp.right);
}
level++;
}
List<List<Integer>> rt=new ArrayList();
for(int i=ans.size()-1;i>=0;i--){
rt.add(ans.get(i));
}
return rt;
}
}