LeetCode 429. N-ary Tree Level Order Traversal

原题链接在这里:https://leetcode.com/problems/n-ary-tree-level-order-traversal/

题目:

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:

LeetCode 429. N-ary Tree Level Order Traversal_第1张图片

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

Example 2:

LeetCode 429. N-ary Tree Level Order Traversal_第2张图片

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]]

Constraints:

  • The height of the n-ary tree is less than or equal to 1000
  • The total number of nodes is between [0, 10^4]

题解:

When iterating by BFS, for current level node, accumulate the count of next level using node's children.

When current level node count == 0, add current list to res, empty current list and comes to next level.

Time Complexity: O(V+E). V is node count. E is edge count.

Space: O(V).

AC Java:

 1 /*
 2 // Definition for a Node.
 3 class Node {
 4     public int val;
 5     public List children;
 6 
 7     public Node() {}
 8 
 9     public Node(int _val) {
10         val = _val;
11     }
12 
13     public Node(int _val, List _children) {
14         val = _val;
15         children = _children;
16     }
17 };
18 */
19 class Solution {
20     public List> levelOrder(Node root) {
21         List> res = new ArrayList<>();
22         if(root == null){
23             return res;
24         }
25         
26         LinkedList que = new LinkedList<>();
27         que.add(root);
28         int curCount = 1;
29         int nextCount = 0;
30         List item = new ArrayList<>();
31         while(!que.isEmpty()){
32             Node cur = que.poll();
33             curCount--;
34             item.add(cur.val);
35             
36             for(Node child : cur.children){
37                 que.add(child);
38                 nextCount++;
39             }
40             
41             if(curCount == 0){
42                 curCount = nextCount;
43                 nextCount = 0;
44                 
45                 res.add(new ArrayList(item));
46                 item = new ArrayList<>();
47             }
48         }
49         
50         return res;
51     }
52 }

类似Binary Tree Level Order Traversal.

你可能感兴趣的:(LeetCode 429. N-ary Tree Level Order Traversal)