【二叉树】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
的(递归)逻辑
- 注意参数为当前节点
root
和sum
当前待求和的目标- 如果当前节点
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 = rightclass Solution:def __init__(self):self.result = 0def findPath(self, root, sum): # ----------- step 2if not root: returnif root.val == sum: self.result += 1self.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