【牛客剑指offer刷题】:Python:84.二叉树中和为某一值的路径(三)

给定一个二叉树和一个目标值,该问题要求找到所有从父节点到子节点且节点值之和等于目标值的路径。题目提供了具体的例子,例如在给定的二叉树中,存在3条这样的路径。解决方案中包含了一个`Solution`类,其中`FindPath`方法递归地寻找符合条件的路径,并通过`help`方法更新路径计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 。
1.该题路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点
2.总节点数目为n
3.保证最后返回的路径个数在整形范围内(即路径个数小于231-1)

数据范围:

0<=n<=10000<=n<=1000
-109 <=节点值<= 109

假如二叉树root为{1,2,3,4,5,4,3,#,#,-1},sum=6,那么总共如下所示,有3条路径符合要求
在这里插入图片描述

示例1

输入:
{1,2,3,4,5,4,3,#,#,-1},6

返回值:3
说明:如图所示,有3条路径符合

示例2

输入:
{0,1},1

返回值:2

示例3

输入:
{1,#,2,#,3},3

返回值:2

代码

注:此题关键是self.n这个全局的计数器。

#coding:utf-8
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @param sum int整型 
# @return int整型
#
class Solution:
    def __init__(self):
        self.n = 0
        
    def FindPath(self , root , sum ):
        # write code here
        if not root:
            return self.n 
        self.help(root, sum)
        self.FindPath(root.left, sum)
        self.FindPath(root.right, sum)
        return self.n 
        
    def help(self, root, sum):
        if not root:
            return 
        sum -= root.val 
        if sum == 0:
            self.n += 1
        self.help(root.left, sum)
        self.help(root.right, sum)
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值