摸鱼学大师 level
获赞
4080
粉丝
196
关注
10
看过 TA
691
复旦大学
2019
算法工程师
IP属地:上海
和but的刷题日记是好朋友!
私信
关注
2021-12-04 14:24
复旦大学 算法工程师
题目的主要信息:  给定一个二叉树root和一个整数值 sum ,求该树有多少路径的的节点值之和等于 sum 路径定义不需要从根节点开始,也不需要在叶子节点结束,但是一定是从父亲节点往下到孩子节点,如下图所示:   方法一:两次dfs 具体做法: 可以使用两次dfs解决,第一次dfs遍历二叉树每个结点,每个结点都作为一次根结点,第二次dfs遍历以每个结点为根的子树,查找该子树是否有路径和等于目标值的。 class Solution { public: int res = 0; void dfs(TreeNode* root, int sum){ //dfs查询以某结点为根的路径数 if(roo...
百分猫:我第一次看哈希表的解法时,不太理解res += mp[temp - sum]。因此把详细解释列在评论里,希望可以帮到其他不懂的人。 这两句代码的意思是: 1. `if(mp.find(temp - sum) != mp.end())`:这一句判断当前累加和减去目标和`sum`是否在哈希表`mp`中出现过。如果出现过,说明存在一条从根节点到当前节点的路径,使得路径上的节点值之和等于`sum`。这是因为`temp`表示从根节点到当前节点的路径上所有节点值的和,而`temp - sum`表示从根节点到某个中间节点的路径上所有节点值的和。如果`temp - sum`在哈希表中出现过,说明从该中间节点到当前节点的路径上的节点值之和等于`sum`。 2. `res += mp[temp - sum];`:这一句将哈希表中记录的满足条件的路径数量累加到结果`res`中。因为`mp[temp - sum]`表示从根节点到某个中间节点的路径上所有节点值的和等于`temp - sum`的路径数量,所以这些路径数量就是满足条件的路径数量。
孤帆远影碧空尽
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务