1public List<List<Integer>> levelOrder(TreeNode root) {
2 List<List<Integer>> result = new ArrayList<>();
3
4 if (root == null) {
5 return result;
6 }
7
8 Queue<TreeNode> queue = new LinkedList<>();
9 queue.offer(root);
10
11 while (!queue.isEmpty()) {
12 int levelSize = queue.size();
13 List<Integer> currentLevel = new ArrayList<>();
14
15 for (int i = 0; i < levelSize; i++) {
16 TreeNode node = queue.poll();
17 currentLevel.add(node.val);
18
19 if (node.left != null) {
20 queue.offer(node.left);
21 }
22 if (node.right != null) {
23 queue.offer(node.right);
24 }
25 }
26
27 result.add(currentLevel);
28 }
29
30 return result;
31}