public List<List<Integer>> levelOrder(Node root) {
List<List<Integer>> res = new ArrayList();
if(root == null) return res;
Deque<Node> q = new LinkedList();
q.offer(root);
while(!q.isEmpty()) {
int size = q.size();
List<Integer> list = new ArrayList();
for(int i = 0; i < size; i++) {
Node node = q.poll();
for(Node n: node.children) {
if(n != null) q.offer(n);
}
list.add(node.val);
}
res.add(list);
}
return res;
}