# 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 pathSum(self, root: Optional[TreeNode], targetSum: int) -> int:
# 思路是定义一个函数,参数是节点和每次递归需要的值
# 然后每个节点再递归调用这个函数
def rootsum(p,target): #返回一个节点有多少个结果
if not p:
return 0
ans=0
if p.val==target:
ans=1
return ans+rootsum(p.left,target-p.val)+rootsum(p.right,target-p.val)
myans=0
if not root:
return myans
myans=myans+rootsum(root,targetSum)
myans=myans+self.pathSum(root.left,targetSum)
myans=myans+self.pathSum(root.right,targetSum)
return myans
思路是:
- 首先定义一个函数,这个函数的作用是判断当前节点及其的树形分支能有多少结果(因为一个节点可能不止一个结果)
- 然后在对这棵树的每一个节点使用这个函数(也是递归),返回总结果