leetcode 102.二叉树的层次遍历(python)

二叉树层次遍历:顾名思义,层次遍历就是将二叉树从上层到下层,每层有从左到右的遍历。如下图所示在这里插入图片描述
可以用队列实现,根节点先进队。然后出队,再依次遍历其左右子节点;依此类推。
按上图遍厉过程为:A先入队,访问B、C并入队,B出队,访问D,E并入队,C出队,访问E并入队。
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:
给定二叉树: [3,9,20,null,null,15,7],

  3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:

[
  [3],
  [9,20],
  [15,7]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
实现上述解释的代码如下:

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

    class Solution(object):
        def levelOrder(self, root):
            """
            :type root: TreeNode
            :rtype: List[List[int]]
            """
            que = []
            res = []
            if not root:
                return 
            que.append(root)
            while len(que) != 0:
                temp = []
                for i in range(len(que)): #加循环是为了将当前层里的结点存入列表
                    node = que.pop(0) #列表最先进入的索引位置为0,以此类推,不是-1,
                    temp.append(node.val) 
                    if node.left:
                        que.append(node.left)
                    if node.right:
                        que.append(node.right)
                res.append(temp)
            return res
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值