LeetCode 热题 HOT 100 (031/100)【宇宙最简单版】

【二叉树】No. 0437 路径总和 III【中等】👉力扣对应题目指路

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【力扣详解】谢谢你的支持!

题目描述: 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目

  • 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)

  • 示例:

    输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8
    输出:3
    解释:和等于 8 的路径有 3 条,如图所示

🔥 思路:将每个节点作为根节点,求当前根节点往下的子树对应的路径总和,加入总结果中


参考如上思路,给出详细步骤如下:

  • 步骤一⭐在 pathSum 函数下,写下总的思路框架用以将每个节点作为根节点来 求当前根节点往下的子树对应的路径总和
    • 本文代码按前序来写的,任何顺序均可
  • 步骤二⭐编写子树统计路径总和函数 findPath 的(递归)逻辑
    • 注意参数为当前节点 rootsum 当前待求和的目标
    • 如果当前节点 root 刚好满足目标,则结果 +1
# 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 __init__(self):
        self.result = 0

    def findPath(self, root, sum):  # ----------- step 2
        if not root: return

        if root.val == sum: self.result += 1

        self.findPath(root.left,  sum - root.val)
        self.findPath(root.right, sum - root.val)
        
    def pathSum(self, root, sum):  # ------------ step 1
        """
        :type root: TreeNode
        :type sum: int
        :rtype: int
        """
        if root:
            self.findPath(root, sum)  ## 当前根节点往下的子树对应的路径总和
            self.pathSum(root.left,  sum)   ##
            self.pathSum(root.right, sum)   ##

        return self.result

希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦
🔥 LeetCode 热题 HOT 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值