题目:
给定一个 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
转载自:https://blog.csdn.net/romeo12334/article/details/81429618