leetcode hot100 路径总和

437. 路径总和 III

已解答

中等

相关标签

相关企业

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

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

Definition for a binary tree node.

class TreeNode(object):

def init(self, val=0, left=None, right=None):

self.val = val

self.left = left

self.right = right

class Solution(object):

def pathSum(self, root, targetSum):

"""

:type root: Optional[TreeNode]

:type targetSum: int

:rtype: int

"""

self.targetSum = targetSum

self.ret = 0

def dfs(tmp,current):

if tmp==None:

return

current += tmp.val

self.ret += self.prefix.get(current - self.targetSum ,0)

self.prefix[current] = self.prefix.get(current,0) + 1

dfs(tmp.left,current)

dfs(tmp.right,current)

self.prefix[current]-= 1

self.prefix={0:1}

dfs(root , 0)

return self.ret

这里我们需要的是一个非常牛逼的方法,也就是使用深度优先搜索,记录一个前缀和,然后在每次搜索的时候,之保留搜索这条路上的前缀和,这样子计算路径的时候只要把当前的路径前去任意一个前缀和的结果和target对上就行。

笨方法是直接遍历,深度搜索两次

相关推荐
.YM.Z10 分钟前
【数据结构】:排序(一)
数据结构·算法·排序算法
Chat_zhanggong34513 分钟前
K4A8G165WC-BITD产品推荐
人工智能·嵌入式硬件·算法
百***480728 分钟前
【Golang】slice切片
开发语言·算法·golang
墨染点香41 分钟前
LeetCode 刷题【172. 阶乘后的零】
算法·leetcode·职场和发展
做怪小疯子43 分钟前
LeetCode 热题 100——链表——反转链表
算法·leetcode·链表
做怪小疯子3 小时前
LeetCode 热题 100——矩阵——旋转图像
算法·leetcode·矩阵
努力学习的小廉3 小时前
我爱学算法之—— BFS之最短路径问题
算法·宽度优先
高山上有一只小老虎3 小时前
构造A+B
java·算法
木头左3 小时前
缺失值插补策略比较线性回归vs.相邻填充在LSTM输入层的性能差异分析
算法·线性回归·lstm
sin_hielo4 小时前
leetcode 2435
数据结构·算法·leetcode