1. 程式人生 > >LeetCode--429--N叉樹的層序遍歷

LeetCode--429--N叉樹的層序遍歷

leet type eee width spa return new 超過 oot

問題描述:

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

例如,給定一個 3叉樹 :

技術分享圖片

返回其層序遍歷:

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

說明:

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

方法1:

 1 class Solution(object):
 2     def levelOrder(self, root):
 3         """
 4         :type root: Node
 5         :rtype: List[List[int]]
 6         """
7 if not root: 8 return [] 9 res = [[]] 10 que = [(root,0)] 11 while que: 12 node,level = que.pop(0) 13 if level >= len(res): 14 res.append([]) 15 res[level].append(node.val) 16 for child in
node.children: 17 que.append((child,level + 1)) 18 return res

方法2:

 1 class Solution(object):
 2     def levelOrder(self, root):
 3         """
 4         :type root: Node
 5         :rtype: List[List[int]]
 6         """
 7         if not root:
 8             return []
 9
levels = []#結果存放 10 q = [root] 11 while q: 12 new_q = []#當前層的結點 13 level=[]#當前層的結點的val 14 for node in q: 15 level.append(node.val) 16 for child in node.children: 17 new_q.append(child) 18 levels.append(level)#把當前層的val加入到結果集中 19 q = new_q 20 return levels

2018-10-02 09:14:56

LeetCode--429--N叉樹的層序遍歷