513. 找树左下角的值(中等)

https://leetcode.cn/problems/find-bottom-left-tree-value/
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。

假设二叉树中至少有一个节点。

示例 1:
在这里插入图片描述
输入: root = [2,1,3]
输出: 1

class Solution:
    def findBottomLeftValue(self, root: Optional[TreeNode]) -> int:
        # 深度优先搜索
        curval, curheight = 0, 0
        def traverse(node, height):
            nonlocal curval, curheight
            if not node:
                return
            height += 1
            traverse(node.left, height)
            traverse(node.right, height)
            if height > curheight:
                curheight = height
                curval = node.val
        traverse(root, 0)
        return curval

        # 广度优先搜索
        # 使用广度优先搜索遍历每一层的节点。
        # 在遍历一个节点时,需要先把它的非空右子节点放入队列,然后再把它的非空左子节点放入队列,
        # 这样才能保证从右到左遍历每一层的节点。广度优先搜索所遍历的最后一个节点的值就是最底层最左边节点的值。
        # from collections import deque
        # result = 0
        # q = deque([root])
        # while q:
        #     node = q.popleft()
        #     if node.right:
        #         q.append(node.right)
        #     if node.left:
        #         q.append(node.left)
        #     result = node.val
        # return result
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值