429. N叉树的层序遍历
给定一个N叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。
例如,给定一个 3叉树 :

返回其层序遍历:
[
[1],
[3,2,4],
[5,6]
]
说明:
树的深度不会超过 1000。
树的节点总数不会超过 5000。
思路:
- 与之前的二叉树层次遍历类似,用队列实现
- 每个节点出队列时,将其子节点压入队列中
- 在输出中树的每一行需要单独保存,标记每行最右的节点判断是否需要换行
- 当前节点等于最右的节点时,下一层的最右节点是最新压入队列中的元素,需要注意的是,当遍历最后一行的最右节点后,队列为空,额外需要判断
"""
# 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 []
result, temp, queue = [], [], []
current_layer_right = root
queue.append(root)
while queue:
current_node = queue.pop(0)
temp.append(current_node.val)
current_node_children = current_node.children
if current_node_children:
queue.extend(current_node_children)
if current_node == current_layer_right:
if queue:
current_layer_right = queue[-1] # next layer last node
result.append(temp)
temp = []
return result

浙公网安备 33010602011771号