每日一练:路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum , 判断该树中是否存在 根节点到叶子节点的路径, 这条路径上所有节点值相加等于目标和 targetSum。

class TreeNode:
    def __init__(self,x):
        self.val=x
        self.left=None
        self.right=None
class Solution:
    def hasPathSum(self,root,sum):
        if root is None:
            return False
        if sum == root.val and root.left is None and root.right is None:
            return True
        return self.hasPathSum(root.left,sum-root.val) or self.hasPathSum(root.right,sum-root.val)
  1. TreeNode类:

    • 这个类定义了二叉树的一个节点,包含三个属性:
      • val:存储节点的值。
      • left:指向该节点左子节点的引用。
      • right:指向该节点右子节点的引用。
    • __init__方法是TreeNode类的构造函数,用于初始化节点的值以及其左右子节点。默认情况下,左右子节点被初始化为None,表示没有子节点。
  2. Solution类:

    • 这个类中定义了一个方法hasPathSum,它接受两个参数:
      • root:表示二叉树的根节点。
      • sum:表示期望的路径和。
    • hasPathSum方法首先检查根节点是否为空,如果是,则返回False,因为没有路径可以遍历。
    • 如果当前节点是叶子节点(即root.leftroot.right都为None),并且当前节点的值等于sum,则返回True,表示找到了一个和为sum的路径。
    • 如果当前节点不是叶子节点,方法会递归地调用自身,分别在左子树和右子树上搜索满足条件的路径。路径的当前和需要减去当前节点的值,因为我们要找到从根节点到叶子节点的路径和。
    • 最后,方法返回两个递归调用的逻辑或(or)结果。如果任一递归调用返回True,则表示存在满足条件的路径,方法返回True;否则返回False

这个hasPathSum方法使用了深度优先搜索(DFS)策略来遍历二叉树。它是一种高效的路径搜索方法,可以确保每个可能的路径都被检查过。这种方法特别适用于树形结构的路径问题,因为它可以很容易地跟踪路径上的节点,并在必要时回溯到上一个节点继续搜索。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值