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对上就行。

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

相关推荐
快去睡觉~5 小时前
力扣73:矩阵置零
算法·leetcode·矩阵
小欣加油5 小时前
leetcode 3 无重复字符的最长子串
c++·算法·leetcode
猿究院--王升8 小时前
jvm三色标记
java·jvm·算法
一车小面包8 小时前
逻辑回归 从0到1
算法·机器学习·逻辑回归
tt55555555555510 小时前
字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
c++·算法·矩阵
元亓亓亓10 小时前
LeetCode热题100--101. 对称二叉树--简单
算法·leetcode·职场和发展
不会学习?11 小时前
算法03 归并分治
算法
NuyoahC11 小时前
笔试——Day43
c++·算法·笔试
2301_8219199212 小时前
决策树8.19
算法·决策树·机器学习
秋难降12 小时前
别再用暴力排序了!大小顶堆让「取极值」效率飙升至 O (log n)
python·算法·排序算法