要求
给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。
树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。
示例 1:
输入:root = [1,null,3,2,4,null,5,6]
输出:[[1],[3,2,4],[5,6]]
示例 2:
输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]
核心代码
class Node:
def __init__(self, val=None, children=None):
self.val = val
self.children = children
class Solution:
def levelOrder(self, root: 'Node') -> List[List[int]]:
if not root:
return []
nodes = [root]
result = list(list())
self.generate(nodes,result)
return result
def generate(self,nodes,result):
new_nodes = []
new_nodes_values = []
for node in nodes:
for leaf in node.children:
new_nodes.append(leaf)
new_nodes_values.append(node.val)
result.append(new_nodes_values)
if len(new_nodes) == 0:
return
self.generate(new_nodes,result)
解题思路:这个题的解题思路和二叉树的层次遍历是一样的,我们都需要一个新的节点层和节点的值层,对数据进行存储,依据层次进行遍历即可。