class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
result = []
if not root:
return []
q = deque([]) # 创建队列q,用于层序遍历
q.append(root) # 将根节点加入队列
while len(q) > 0: # 循环直到队列为空
size = len(q) # 当前层的节点个数
ls = [] # 存储当前层的节点值
while size > 0:
cur = q.popleft() # 取出队列中的一个节点
ls.append(cur.val) # 将当前节点的值加入当前层的列表
# 将当前节点的左右子节点加入队列,作为下一层的节点
if cur.left :
q.append(cur.left)
if cur.right :
q.append(cur.right)
size = size - 1 # 继续处理下一个节点
result.append(ls[:]) # 将当前层的节点值列表加入结果列表中 这行代码的功能是将列表 ls 的内容复制一份并添加到另一个列表 result 中。这里使用 ls[:] 表示复制 ls 列表的所有元素,而不是简单地将 ls 列表作为一个整体添加到 result 中。这样做可以避免 result 和 ls 共享相同的内存地址,保证它们是两个独立的列表。
return result
LeetCode-二叉树的层序遍历
最新推荐文章于 2024-04-28 16:03:45 发布