1. 程式人生 > >leetcode 429. N叉樹的層序遍歷【樹】【迭代】【佇列】

leetcode 429. N叉樹的層序遍歷【樹】【迭代】【佇列】

題目:

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

例如,給定一個 3叉樹 :

返回其層序遍歷:

[
     [1],
     [3,2,4],
     [5,6]
]

說明:

  1. 樹的深度不會超過 1000
  2. 樹的節點總數不會超過 5000

思路:

       利用佇列儲存當前層的節點。出佇列時將當前層節點儲存在temp臨時集合中,然後將子節點入佇列。直到最後一層。

程式碼:

"""
# Definition for a Node.
class Node(object):
    def __init__(self, val, children):
        self.val = val
        self.children = children
"""
class Solution(object):
    def levelOrder(self, root):
        """
        :type root: Node
        :rtype: List[List[int]]
        """
        res = []
        queue = []
        if root == None:
            return []
        queue.append(root)
        while len(queue):
            l = len(queue)
            temp = []
            for i in range(l):
                cur = queue.pop(0)
                temp.append(cur.val)
                for child in cur.children:
                    queue.append(child)
            res.append(temp)
        return res