LeetCode刷题笔记第112题:路径总和

LeetCode刷题笔记第112题:路径总和

想法:
要找到树中是否存在一条路径和为目标值,使用递归的方法。判断是否存在路径和是否等于目标值,从根节点开始,而根节点之下的子树判断是否存在目标值与根节点数值的差的路径,直到递归到叶子结点。具体代码及注释如下。

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def hasPathSum(self, root: TreeNode, targetSum: int) -> bool:
        # 如果根节点不存在则返回False
        if not root:
            return False
        # 如果同时没有左右子树则仅有根节点,对比目标值与此时的数值是否相同,相同说明找到了根节点到叶子节点的路径,返回判断
        if not root.left and not root.right:
            return targetSum == root.val
        # 当根节点存在左子树或者右子树,或者同时存在左右子树,递归判断,将目标值减去根节点的数值再去判断左右子树中的情况,返回最终的结果,当存在一条路径时则会返回True,反之则是False
        return self.hasPathSum(root.left, targetSum - root.val) or self.hasPathSum(root.right, targetSum - root.val)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值