1import java.util.ArrayList;2import java.util.List;3
4class TreeNode {5 int val;6 TreeNode left, right;7 TreeNode(int val) { this.val = val; }8}9
10class Solution {11 public List<List<Integer>> levelOrder(TreeNode root) {12 List<List<Integer>> result = new ArrayList<>();13 dfs(root, 0, result);14 return result;15 }16
17 private void dfs(TreeNode node, int depth, List<List<Integer>> result) {18 if (node == null) return;19 20 if (result.size() == depth) {21 result.add(new ArrayList<>());22 }23 result.get(depth).add(node.val);24 25 dfs(node.left, depth + 1, result);26 dfs(node.right, depth + 1, result);27 }28}