public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); dfs(res, root, 1); return res; } private void dfs(List<List<Integer>> res, TreeNode node, int level) { if (node == null) return; if (res.size() < level) res.add(new ArrayList<Integer>()); res.get(level - 1).add(node.val); dfs(res, node.left, level + 1); dfs(res, node.right, level + 1); } }