Given an n-ary tree, return the level order traversal of its nodes' values.

Nary-Tree input serialization is represented in their level order traversal, each group of children is separated by the null value (See examples).

 

Example 1:

429. N-ary Tree Level Order Traversal_i++

Input: root = [1,null,3,2,4,null,5,6]
Output: [[1],[3,2,4],[5,6]]


Example 2:

429. N-ary Tree Level Order Traversal_i++_02

Input: root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
Output: [[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]


分析: use BFS



1 /*
2 // Definition for a Node.
3 class Node {
4 public int val;
5 public List<Node> children;
6
7 public Node() {}
8
9 public Node(int _val) {
10 val = _val;
11 }
12
13 public Node(int _val, List<Node> _children) {
14 val = _val;
15 children = _children;
16 }
17 };
18 */
19 class Solution {
20 public List<List<Integer>> levelOrder(Node root) {
21 List<List<Integer>> result = new LinkedList<>();
22 if (root == null) return result;
23
24 Queue<Node> queue = new LinkedList<>();
25 queue.add(root);
26 List<Integer> temp = new LinkedList<>();
27
28 while (!queue.isEmpty()) {
29 int count = queue.size();
30 temp.clear();
31 for (int i = 1; i <= count; i++) {
32 Node node = queue.poll();
33 temp.add(node.val);
34 for (Node child : node.children) {
35 queue.offer(child);
36 }
37 }
38 result.add(new LinkedList<>(temp));
39 }
40 return result;
41 }
42 }