import java.util.*; public class Solution { // 从上到下按层打印二叉树的val值,返回值为一个二维列表 // 思路:bfs遍历二叉树,同时记录下当前层的节点数,以便插入对应行的二维列表中 public ArrayList<ArrayList<Integer>> Print (TreeNode pRoot) { if(pRoot == null) return new ArrayList<>(); // write code here ArrayList<ArrayList<Integer>> resList = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); // index记录层数 while(!queue.isEmpty()){ // 记录当前层的节点数 int num = queue.size(); ArrayList<Integer> list = new ArrayList<>(); // 嵌套循环的方式,将同一层的节点poll出,并将其左右子节点添加入队列,每次poll出都添加到链表中 for(int i = 0;i<num;i++){ TreeNode node = queue.poll(); if(node.left != null) queue.add(node.left); if(node.right != null) queue.add(node.right); list.add(node.val); } // 将当前层的结点链表添加到总链表中 resList.add(list); } return resList; } }