给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树
:
返回其层序遍历:
[ [1], [3,2,4], [5,6] ]
说明:
- 树的深度不会超过
1000
。 - 树的节点总数不会超过
5000
。
思路:
BFS,跟LeetCode-Python-107. 二叉树的层次遍历 II很类似,只要把node.left和node.right改成所有的children就行了。
"""
# 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 []
nodes = [root]
node_val = list(list())
self.generate(nodes, node_val)
return node_val
def generate(self, nodes, node_val):
new_node = []
new_node_val = []
for node in nodes:
for leaf in node.children:
new_node.append(leaf)
new_node_val.append(node.val)
node_val.append(new_node_val)
if len(new_node) == 0:
return
self.generate(new_node, node_val)