437. 路径总和 III

思路:

深度优先搜索,暴力搜索:

递归遍历每一个节点的所有可能路径,然后将这些路径书目加起来即为返回结果

首先定义rootSum(p,val)表示以节点p为起点向下且满足路径总和为val的路径数目。

对二叉树的每个节点求出 rootSum(p,target),然后对这些路径数目求和即为返回结果

问题转化为以p为根节点  路径之和为targetSum的路径有多少条?

递归(深度优先搜索,暴力搜索)

int  rootSum(p,targetSum):

以当前节点p为目标路径的起点递归向下进行搜索

假设当前的节点p为val

判断p->val是否等于targetSum

对左子树和右子树进行递归搜索:

对节点p的左孩子pl求出rootSum(pl,targetSum-val)

对节点p的右孩子节点pr求出rootSum(pr,targetSum-val)

节点p的rootsum(p,targetsum)=rootsum(pl,targetsum-val)+rootsum(pr,targetsum-val);

/*** 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 rootSum(TreeNode *root,int targetSum){int sum=0;if(root==NULL){return 0;}if(root->val==targetSum)sum++;sum+=rootSum(root->left,targetSum-root->val);sum+=rootSum(root->right,targetSum-root->val);return sum;}int pathSum(TreeNode* root, int targetSum) {
if(root==NULL)
return  0;
int n1=rootSum(root,targetSum);
int n2=pathSum(root->left,targetSum);
int n3=pathSum(root->right,targetSum);return n1+n2+n3;
}};

LeetCode 437. 路径总和 III相关推荐

  1. Leetcode 437.路径总和III

    路径总和III 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). ...

  2. LeetCode 437. 路径总和 III(双重递归)

    1. 题目 给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二 ...

  3. leetcode - 437. 路径总和 III

    给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树不超过1 ...

  4. 【LeetCode】【HOT】437. 路径总和 III(DFS)

    [LeetCode][HOT]437. 路径总和 III 文章目录 [LeetCode][HOT]437. 路径总和 III package hot;class TreeNode{int val;Tr ...

  5. LeetCode 371. 两整数之和(异或操作) / 639. 解码方法 II(动态规划)/ 437. 路径总和 III

    371. 两整数之和 2021.9.26 每日一题 题目描述 给你两个整数 a 和 b ,不使用 运算符 + 和 - ​​​​​​​,计算并返回两整数之和. 示例 1: 输入:a = 1, b = 2 ...

  6. 【LeetCode笔记】437. 路径总和III(Java、双重递归、二叉树)

    文章目录 题目描述 思路 & 代码 题目描述 说实话确实比I & II要恶心一点 这里直接用双递归秒了(今天才发现我是之前先写的III,再写的I & II) 有前缀和的写法,但 ...

  7. leetcode 437. Path Sum III | 437. 路径总和 III(DFS,前缀和)

    题目 https://leetcode.com/problems/path-sum-iii/ 题解 DFS+前缀和问题,注意节点可能为 0 的情况(也是因此发现应该用 HashMap 记录前缀和的个数 ...

  8. 437. 路径总和 III

    给定一个二叉树,它的每个结点都存放着一个整数值. 找出路径和等于给定数值的路径总数. 路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点). 二叉树不超过1 ...

  9. leetcode437. 路径总和 III

    437. 路径总和 III 难度中等1075 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目. 路径 不需要从根 ...

最新文章

  1. react 嵌套渲染_React 中嵌套数组数据如何渲染到前端页面
  2. 深刻揭示Python 与C/C++互动
  3. android 如何完全卸载Android Studio
  4. leetcode 16. 3Sum Closest | 16. 最接近的三数之和(双指针)
  5. 请求对象Request
  6. 简评黑客利器——中国菜刀
  7. MySQL 中锁的面试题总结
  8. android word设计模式,word07设计模式
  9. HP ILO2和JRE6(java runtime environment)
  10. 【渝粤教育】国家开放大学2018年春季 0175-22T社会调查研究与方法 参考试题
  11. “勒索文件”或可部分恢复
  12. 怎样用java抽签小程序,可以作弊的抽签小程序,急求java抽签小程序
  13. Hbase+JAVAWeb实现超市仓库管理系统
  14. python查看opencv版本
  15. 协调世界时转换为GPS周秒(转载)
  16. C# Word文档添加水印
  17. java poi导出pdf_Java POI 生成PDF文档,很给力!
  18. eclipse远程调试Java程序
  19. 阿里云周晶:基于融合与协同的边缘云原生体系实践
  20. java web项目 权限管理

热门文章

  1. CCF201909-4 推荐系统(100分)【模拟】
  2. HDU1066 Last non-zero Digit in N!【大数+模除】
  3. UVA216 UVALive5155 Getting in Line【全排列+回溯】
  4. I00033 消除游戏
  5. pandas 数据集的端到端处理
  6. 机器学习基础(二十一)—— 分类与回归、生成模型与判别模型
  7. c++ 开发虚拟摄像头_开发板有了,但我们要怎么玩?
  8. 开发安卓app游戏_「安卓APP开发流程」安卓APP如何开发的?
  9. delphi 获取数组长度_Java中的数组(基础篇六)
  10. json string 格式_Retrofit同时解析JSON和XML数据格式