/* // Definition for a Node. class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _children) { val = _val; children = _children; } }; */ class Solution { private void levelOrder(ArrayList<List<Integer>> traversal, Node root, int level) { if (root == null) { return; } if (level >= traversal.size()) { traversal.add(new ArrayList<Integer>()); } traversal.get(level).add(root.val); for (var child : root.children) { levelOrder(traversal, child, level + 1); } } public List<List<Integer>> levelOrder(Node root) { ArrayList<List<Integer>> result = new ArrayList<>(); levelOrder(result, root, 0); return result; } }