題目
給定一個 N 叉樹铐殃,返回其節(jié)點值的層序遍歷榕堰。 (即從左到右玉控,逐層遍歷)。
例如座每,給定一個 3叉樹 :
返回其層序遍歷:
[
[1],
[3,2,4],
[5,6]
]
說明:
樹的深度不會超過 1000前鹅。
樹的節(jié)點總數(shù)不會超過 5000。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有峭梳。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán)舰绘,非商業(yè)轉(zhuǎn)載請注明出處。
解題思路
- 判讀為空葱椭,返回[]
- 使用stack保存每一層的節(jié)點捂寿,使用res保存結(jié)果
- 循環(huán)遍歷每一層,取出每個節(jié)點孵运,并且保存每層的children秦陋。更遜stack和res。
- 返回res
代碼
"""
# 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 []
stack = [root]
res = []
while stack:
nodes = []
next_layer = []
for n in stack:
nodes.append(n.val)
next_layer.extend(n.children)
stack = next_layer
res.append(nodes)
return res