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 size = queue.size(); for(int i = 0;i < size;i ++){ 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; } }