胡扯:真好,我上一个题是用 Arraylist集合 来完成的。对于这个题来说,那就是很简单了每次添加到开头,就相当于反过来了。 至于 二叉,还是多叉,无所谓了。

思路:

    1、参考上一个多叉树的 层序遍历。N叉树的层序遍历

    2、只需要在把每一层的数据 添加到集合的时候。变成  list.add(0,aa); 就好了,这样就成了反序的了。

 

代码:

List<List<Integer>> arr = new ArrayList<>();
    void bfs (List<TreeNode> root){

        List<Integer> aa = new ArrayList<>();
        for (TreeNode r : root)
            aa.add(r.val);
        arr.add(0,aa);
        List<TreeNode> crr = new ArrayList<>();
        for (TreeNode r : root){
            if (r.left != null)
                crr.add(r.left);
            if (r.right != null)
                crr.add(r.right);
        }
        if (crr.size() > 0)
            bfs(crr);
    }

    public List<List<Integer>> levelOrderBottom(TreeNode root) {

        if (root == null)
            return arr;
        List<TreeNode> a =  new ArrayList<>();
        a.add(root);
        bfs( a );
        return arr;
    }