/*
// Definition for a Node.
class Node {
    public int val;
    public List<Node> children;

    public Node() {}

    public Node(int _val,List<Node> _children) {
        val = _val;
        children = _children;
    }
};
*/
class Solution {
    public List<List<Integer>> levelOrder(Node root) {
        LinkedList<List<Integer>> list = new LinkedList<>();
        if (root == null) return list;
        LinkedList<Node> currLV = new LinkedList<>();
        currLV.add(root);
        while (currLV.size() != 0) {
            LinkedList<Integer> li = new LinkedList<>();
            for (Node node : currLV) {
                li.add(node.val);
            }
            list.add(li);
            LinkedList<Node> nextLV = new LinkedList<>();
            while (currLV.size() != 0) {
                Node curr = currLV.poll();
                for (Node node : curr.children) {
                    if (node != null) nextLV.add(node);
                }
            }
            currLV = nextLV;
        }
        return list;
    }
}