leetcode 429. N叉樹的層序遍歷【樹】【迭代】【佇列】
阿新 • • 發佈:2018-12-21
題目:
給定一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。
例如,給定一個 3叉樹
:
返回其層序遍歷:
[ [1], [3,2,4], [5,6] ]
說明:
- 樹的深度不會超過
1000
。 - 樹的節點總數不會超過
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