题目

给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。

说明: 叶子节点是指没有子节点的节点。

示例: 

给定如下二叉树,以及目标和 sum = 22

              5
/ \
4 8
/ / \
11 13 4
/ \ \
7 2 1

返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2


考点

1.递归

2.举例子分解问题


思路

3种情况

1.sum=root->val && !root->left &&.!root->right

2.遍历左子树  hasPathSum(root->left, sum - root->val)

3.遍历右子树 hasPathSum(root->right, sum - root->val);

用||合并。


代码

leetcode这题只是要求是不是存在这样的路径,不要求打印,所以不用使用栈。

执行用时为 8 ms 的范例

class Solution {
public:
bool hasPathSum(TreeNode* root, int sum) {
if(!root) return false; if(!root->left && !root->right)
return (sum == root->val); return hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val);
}
};

3个情况合并

class Solution {
public:
bool hasPathSum(TreeNode* root, int sum) {
if(!root) return false;
return sum == root->val
&& !root->left
&& !root->right
|| hasPathSum(root->left, sum - root->val)
|| hasPathSum(root->right, sum - root->val);
}
};


问题

最新文章

  1. 学习笔记:HTML5 Canvas绘制简单图形
  2. Javascript.ReactNative-2-javascript-syntax-in-react-native
  3. 如何判断一条sql(update,delete)语句是否执行成功
  4. python的sys.path
  5. Linux下高效编写Shell——shell特殊字符汇总
  6. Android SDK开发常用工具的使用及其异常处理
  7. 海量Web日志分析 用Hadoop提取KPI统计指标
  8. 数据结构(C实现)------- 最小生成树之Prim算法
  9. Xposed快速hook关键点
  10. 【一天一道LeetCode】#111. Minimum Depth of Binary Tree
  11. Django 2.0 URL新版配置介绍
  12. CORS(Cross-origin resource sharing) “跨域资源共享”
  13. 编译模块的Makefile解析
  14. ImportTsv-HBase数据导入工具
  15. apachebench对网站进行并发测试
  16. Spring 一二事(8) - annotation 形式的 MVC
  17. mysql server 自动断开的问题
  18. python高级内置函数和各种推导式的介绍:一行搞定的代码
  19. Yii 读写分离 分表分库
  20. HUAS 1480 虫洞(最短路)

热门文章

  1. 案例53-crm练习修改客户功能实现
  2. ThreadPoolExecutor的三种队列SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
  3. Day4上午
  4. Oracle Functions转成Ms-Sql procedure
  5. intellijidea课程 intellijidea神器使用技巧 4-2 抽取
  6. Python高级数据类型
  7. P1576 最小花费
  8. web worker技术-js新线程
  9. DOM对象和js对象以及jQuery对象的区别
  10. jquery对radio的操作汇总