# 从上往下遍历,判断当前结点是否有左右孩子,若有则将其左右孩子加入待遍历列表中,若都无则表示遍历结束,最终将当前结点添加至最终结果列表即可
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root: return []
res, q = [], [root] # 初始化最终结果列表和待遍历结点列表
while q:
n = len(q)
level = [] # 初始化保存当前所在层的所有结点的列表
for i in range(n):
node = q.pop(0) # 删除当前此结点避免重复遍历
level.append(node.val) # 将当前结点的值添加至当前层结点列表中
if node.left: # 若当前结点有左孩子就将左孩子添加至待遍历结点列表中
q.append(node.left)
if node.right: # 同上
q.append(node.right)
res.append(level) # 将当前层结点列表添加至最终结果列表当中
return res
12-09
407
10-16
323
01-24
521