二叉树 Leetcode 429 N叉树的层序遍历
2019-07-14 本文已影响0人
禾木清清
题目
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :
返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
说明:
树的深度不会超过 1000。
树的节点总数不会超过 5000。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
- 判读为空,返回[]
- 使用stack保存每一层的节点,使用res保存结果
- 循环遍历每一层,取出每个节点,并且保存每层的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