这边借助两个数据结构实现,HashMap 记录每个节点层 Queue 进行层序遍历
最后返回即可

import java.util.*;


/*
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {


        ArrayList<ArrayList<Integer> > result=new ArrayList<ArrayList<Integer> >();
        if(pRoot==null){
            return result;
        }
        //广度优先遍历,很简单的层序遍历,队列
        Queue<TreeNode> queue=new LinkedList<>();
        ArrayList<Integer> item=new ArrayList<Integer>();
        result.add(item);

        queue.add(pRoot);
        //记录当前层
        int level=1;
        HashMap<TreeNode,Integer> map=new HashMap<>();
        //记录节点层
        map.put(pRoot,1);

        while(!queue.isEmpty()){
            TreeNode node=queue.poll();
            int curLevel=map.get(node);
            if(curLevel!=level){
                //下一层
                item=new ArrayList<>();
                result.add(item);
                level=curLevel;
            }
            item.add(node.val);
            if(node.left!=null){
                map.put(node.left,curLevel+1);
                queue.add(node.left);
            }
            if(node.right!=null){
                map.put(node.right,curLevel+1);
                queue.add(node.right);
            }
        }
        return result;
    }

}