当前位置: 首页 > ai >正文

力扣HOT100之二叉树: 437. 路径总和 III


感觉这道题还是有点难,想了半天没想出来直接去看题解了,感觉要反复刷。这道题和之前的560. 和为 K 的子数组很像,对应的博客是这篇,建议先去看前面的博客再来看这道题。这道题更难一些,这道题需要用哈希表来记录符合条件的前缀的个数,除此以外,我们还需要用到回溯的思想,因为我们是根据当前的节点值来向上查找路径个数,当我们在一个左子树中查找完所有符合条件的路径后,还需要到右子树中查找符合条件的路径,但是右子树中的路径的节点与左子树完全不相关,所以我们需要及时回退,将哈希表中关于左子树路径相关的记录删除。感觉这道题的思路还是不太好描述,最好还是结合灵神的题解来看。

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int pathSum(TreeNode* root, int targetSum) {int result = 0;//初始化哈希表,必须这么做//目的是防止根节点值正好等于targetSum的情况无法被统计unordered_map<long long, int> Hash{{0, 1}};  //定义递归遍历二叉树的lambda函数auto dfs = [&](this auto&& dfs, TreeNode* node, long long s){//递归终止条件if(!node) return ;//单层递归主体s += node -> val;//将node当作路径的重点,统计起点的数量result += Hash[s - targetSum];   //如果没有s - targetSum这个键就会新建,且值为0//回溯Hash[s]++;dfs(node -> left, s);dfs(node -> right, s);Hash[s]--;};dfs(root, 0);return result;}
};
http://www.xdnf.cn/news/8106.html

相关文章:

  • 8天Python从入门到精通【itheima】-29~31
  • dify介绍(优势与作用)
  • 小样本百分比的统计检验
  • AbMole推荐Rapamycin: 自噬、肿瘤、免疫、衰老研究的关键工具
  • 干货分享:90+深度学习开源数据集
  • React 第四十五节 Router 中 useHref() Hook的使用详解及注意事项
  • session、cookie或者jwt 解释一下
  • 十五、Hive 窗口函数
  • java基础(方法)
  • Ubuntu18.04安装ros
  • -40℃到+125℃全温域稳定!车规级晶振如何突破温度极限
  • 27-FreeRTOS的任务管理
  • 华为模拟器练习简单的拓扑图(3台路由器和2台pc)
  • 如何成功开发海外APP:跨国市场的机遇与挑战
  • 杨校老师竞赛课之青科赛GOC3-4年级组模拟题
  • 【Vue】将响应式对象转为非响应式对象
  • 企业级调度器LVS TUN实践
  • 腾讯音乐二面
  • sockaddr结构体详解
  • YOLOv8模型剪枝笔记(DepGraph和Network Slimming网络瘦身)
  • 六、插曲:项目范围管理
  • 东芝发布DFN8×8封装的650V第三代SiC MOSFETs
  • 详解一下Go语言中的ParseInt
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(27):失敗 失败 经验
  • GIM发布新版本了 (附rust CLI制作brew bottle流程)
  • 小米2025年校招笔试真题手撕(二)
  • git:The following paths are ignored by one of your
  • 阿里云服务器 篇十四:图片库网站
  • ext2文件系统详讲
  • Linux 玩转nfs