1. public List<List<Integer>> levelOrder(Node root) {
    2. List<List<Integer>> list = new LinkedList<>();
    3. Deque<Node> deque = new LinkedList();
    4. if (root != null) {
    5. deque.addLast(root);
    6. }
    7. while (!deque.isEmpty()) {
    8. LinkedList<Integer> tempList = new LinkedList<>();
    9. // 队列长度
    10. int size = deque.size();
    11. while (size-- > 0) {
    12. Node poll = deque.pollFirst();
    13. for (Node child : poll.children) {
    14. deque.addLast(child);
    15. }
    16. tempList.add(poll.val);
    17. }
    18. list.add(tempList);
    19. }
    20. return list;
    21. }
    1. public List<List<Integer>> levelOrder(Node root) {
    2. List<List<Integer>> ans = new ArrayList<>();
    3. dfs(root, ans, 0);
    4. return ans;
    5. }
    6. void dfs(Node node, List<List<Integer>> ans, int level) {
    7. if (node == null) return;
    8. if (ans.size() == level) ans.add(new ArrayList<>());
    9. ans.get(level).add(node.val);
    10. for (Node child : node.children) dfs(child, ans, level + 1);
    11. }