1. 程式人生 > 實用技巧 >LeetCode 429. N 叉樹的層序遍歷

LeetCode 429. N 叉樹的層序遍歷

429. N 叉樹的層序遍歷

Difficulty: 中等

給定一個 N 叉樹,返回其節點值的_層序遍歷_。(即從左到右,逐層遍歷)。

樹的序列化輸入是用層序遍歷,每組子節點都由 null 值分隔(參見示例)。

示例 1:

輸入:root = [1,null,3,2,4,null,5,6]
輸出:[[1],[3,2,4],[5,6]]

示例 2:

輸入: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]
輸出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]

提示:

  • 樹的高度不會超過1000
  • 樹的節點總數在 [0,10^4] 之間

Solution

Language: ****
解法跟二叉樹的層序遍歷一樣:BFS+queue,只是需要注意node.children返回的是一個list

"""
# Definition for a Node.
class Node:
   def __init__(self, val=None, children=None):
     self.val = val
     self.children = children
"""
​
class Solution:
  def levelOrder(self, root: 'Node') -> List[List[int]]:
    if not root:
      return []
    queue, res = [root], []
    
    while queue:
      curLevel, size = [], len(queue)
      for i in range(size):
        node = queue.pop(0)
        curLevel.append(node.val)
        for child in node.children:
          queue.append(child)
      res.append(curLevel)
      
    return res