正常层次遍历步骤,然后把结果reverse一下
import java.util.*;
/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 * }
 */
public class Solution {
    /**
     * 
     * @param root TreeNode类 
     * @return int整型ArrayList<ArrayList<>>
     */
    public ArrayList<ArrayList<Integer>> levelOrderBottom (TreeNode root) {
        // write code here
        ArrayList<ArrayList<Integer>> temp = new ArrayList<>();
        if(root==null)
            return temp;
        Queue<TreeNode> q = new LinkedList<>();
        q.offer(root);
        while(!q.isEmpty()){
            int size = q.size();
            ArrayList<Integer> path = new ArrayList<>();
            while(size > 0 ){
                TreeNode n = q.remove();
                path.add(n.val);
                if(n.left!=null)    q.offer(n.left);
                if(n.right!=null)    q.offer(n.right);
                size--;
            }
            temp.add(new ArrayList<>(path));
        }
        ArrayList<ArrayList<Integer>> res = new ArrayList<>();
        for(int i = temp.size()-1 ; i >= 0 ; i--)
            res.add(temp.get(i));
        return res;
    }
}
京公网安备 11010502036488号