【LeetCode 簡單題】95-N叉樹的層序遍歷
阿新 • • 發佈:2018-11-19
宣告:
今天是第95道題。給定一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除
(手動比心ღ( ´・ᴗ・` ))
正文
題目:給定一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。
例如,給定一個 3叉樹
:
返回其層序遍歷:
[ [1], [3,2,4], [5,6] ] 說明:
- 樹的深度不會超過
1000
- 樹的節點總數不會超過
5000
。
解法1。用迭代的方法做,程式碼如下。
執行用時: 144 ms, 在N-ary Tree Level Order Traversal的Python提交中擊敗了99.10% 的使用者
""" # 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]] """ if not root: return [] levels = [] queue = [root] while queue: level = [] each_queue = [] for node in queue: level.append(node.val) for child in node.children: each_queue.append(child) levels.append(level) queue = each_queue return levels
解法2。用遞迴的方法做,程式碼如下。
執行用時: 152 ms, 在N-ary Tree Level Order Traversal的Python提交中擊敗了63.88% 的使用者
""" # 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]] """ self.res = [] self.genLists(root,0) return self.res def genLists(self,root,level): if not root: return if len(self.res) <= level: self.res.append([]) self.res[level].append(root.val) for child in root.children: self.genLists(child,level+1)
結尾
解法1&解法2:LeetCode