import java.util.*;

public class Solution { public ArrayList<ArrayList> levelOrder (TreeNode root) { ArrayList<ArrayList> res = new ArrayList<>();
if(root == null) { return res; }
// 队列保存每一层所有结点 Queue queue = new LinkedList<>(); // 先放入根节点 queue.offer(root); while(!queue.isEmpty()) { // 收集当前层的所有结点的值 ArrayList list = new ArrayList<>(); // ·当前层的节点数量 int count = queue.size(); // 遍历每一层 while(count-- > 0) { // 从对头取出节点 TreeNode node = queue.poll(); // 收集结果 list.add(node.val); // 左右节点按顺序加到队尾 if(node.left != null) { queue.offer(node.left); } if(node.right != null) { queue.offer(node.right); } } res.add(list); } return res; } }