LeetCode-二叉树的层序遍历

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










  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值