LeetCode 513. 找树左下角的值

给定一个二叉树,在树的最后一行找到最左边的值。

示例 1:

输入:

    2
   / \
  1   3

输出:
1

注意: 您可以假设树(即给定的根节点)不为 NULL

广度优先搜索BFS的应用
class Solution:
    def findBottomLeftValue(self, root: TreeNode) -> int:
        res = []
        res.append(root)
        while res:
            length = len(res)
            for i in range(length):
                node = res.pop(0)  
                if i == 0:   # 每次都弹出左边的结点,i = 0说明是每一层最左边的结点,更新下来
                    left = node.val
                if node.left:
                    res.append(node.left)  # 左侧结点进队列
                if node.right:
                    res.append(node.right) # 右侧结点进队列
        return left 
写这道题我才发现,对于list的pop()操作,如果只写list.pop()的话默认是list.pop(-1),是按照堆栈的结构弹出,后进先出。

对于这道题的时候,最开始想不出来怎么把最后一行的最左边的元素保留出来,结合pop(0)操作,每一行当i=0时其实就是该行的最左边元素。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值