II*从上到 下打印二叉树*II
说明
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
示例
给定二叉树: [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
提示:
节点总数 <= 1000
注意:本题与 102. 二叉树的层序遍历 相同。
相当于两个过程:第一个过程把二叉树分层,第二个过程对每层进行操作。当改变第二个过程的时候就可以完成更多其他题目
# 引入List类型提示
from typing import List
# 假设定义了TreeNode类
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
# 如果根节点为空,直接返回空列表
if not root:
return []
# 初始化队列,用于按层次存放节点,初始时只包含根节点
queue = [root]
# 初始化结果列表,用于存放每一层的节点值
res = []
# 当队列不为空时,持续进行层次遍历
while queue:
# 将当前层的所有节点值添加到结果列表中
res.append([node.val for node in queue])
# 初始化临时列表,用于存放下一层的节点
ll = []
# 遍历当前层的所有节点
for node in queue:
# 如果左子节点存在,添加到临时列表
if node.left:
ll.append(node.left)
# 如果右子节点存在,添加到临时列表