题目
给你二叉树的根节点 root,返回其节点值的层序遍历。(即逐层地,从左到右访问所有节点)。

提示
一句话思路:用队列实现 BFS——每次循环处理当前层的所有节点,把下一层的节点入队。
- 用
deque队列,先把根节点入队。 - 外层
while控制每一层,内层for按len(q)精确遍历当前层的节点数,避免混淆不同层。 - 每层结束把该层节点值列表
vals加入结果res。 - 时间 O(n)、空间 O(n)(队列最多存一层节点,满二叉树底层约 n/2)。
答案
python
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
res = [] # 存储每一层的节点值列表
if not root: # 空树直接返回空列表
return res
q = deque([root]) # 队列,初始放入根节点
while q: # 队列不空就继续处理
vals = [] # 记录当前层的节点值
for _ in range(len(q)): # 按当前层的节点数精确遍历,不混淆层
node = q.popleft() # 从队头取出一个节点
vals.append(node.val) # 收集该节点的值
if node.left: # 左孩子存在,入队(下一层)
q.append(node.left)
if node.right: # 右孩子存在,入队(下一层)
q.append(node.right)
res.append(vals) # 当前层处理完毕,加入结果
return res
留言板