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

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

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

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

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

思路:

先分析:观察要求我们完成的函数,我们可以归纳出它的功能:询问是否存在从当前节点 root 到叶子节点的路径,满足其路径和为 sum。

假定从根节点到当前节点的值之和为 val我们可以将这个大问题转化为一个小问题:
是否存在从当前节点的子节点到叶子的路径,满足其路径和为 sum - val。

不难发现这满足递归的性质,
1.若当前节点就是叶子节点,那么我们直接判断 sum 是否等于 val 即可(因为路径和已经确定,就是当前节点的值,我们只需要判断该路径和是否满足条件)。
2.若当前节点不是叶子节点,我们只需要递归地询问它的子节点是否能满足条件即可。

Java代码实现:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public boolean hasPathSum(TreeNode root, int sum) {if(root == null) return false; //如果根节点为空,则不存在if(root.left == null && root.right == null) return root.val == sum;return hasPathSum(root.left,sum - root.val) || hasPathSum(root.right,sum-root.val);}
}

二叉树-路径总和(递归)相关推荐

  1. Python3解题:二叉树路径总和问题

    Python3解题:二叉树路径总和问题 原题 https://leetcode-cn.com/problems/path-sum-ii/ 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和 ...

  2. [二叉树路径总和] 一杯茶一包烟,一个递归转一天

    LeetCode 第112题 路径总和 做题记录 题目描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20210409154915348.png?x-oss-pr ...

  3. [Leetcode][第112题][JAVA][路径总和][递归][队列]

    [问题描述][中等] [解答思路] 1. 递归 时间复杂度:O(N) 空间复杂度:O(H) 从根节点开始,每当遇到一个节点的时候,从目标值里扣除节点值,一直到叶子节点判断目标值是不是被扣完. clas ...

  4. 54. Leetcode 113. 路径总和 II (二叉树-二叉树路径和)

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径.叶子节点 是指没有子节点的节点.示例 1: 输入:root = [5, ...

  5. 113. 路径总和 (剑指 Offer 34. 二叉树中和为某一值的路径)(回溯算法)

    给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [ ...

  6. 经典笔试题: 二叉树中和为某一值的路径(路径总和)

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水. 这两题是相似问题,循序渐进.也是力扣和剑指offer的经典题. 路径总和 题目描述 ...

  7. 找树左下角的值+路径总和+从前序和中序遍历序列构造二叉树(day18*)

    这篇可以主要关注一下如何确定递归时是否需要返回值. LC513. 找树左下角的值 给定一个二叉树的根节点,请找出该二叉树的 最底层最左边 节点的值. 思路1 层序遍历 class Solution:d ...

  8. Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树

    513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...

  9. 【leetcode-DFS】求根节点到叶节点数字之和/二叉树的最大路径和/路径总和/左叶子之和/树的直径

    文章目录 求根节点到叶节点数字之和 深度优先搜索 广度优先搜索 二叉树的最大路径和 DFS 路径总和1 深度优先搜索 广度优先搜索 路径总和2 回溯法 广度优先搜索 左叶子之和 递归 DFS 树的直径 ...

最新文章

  1. 网络工程师_记录的一些真题_2017下半年上午
  2. java treeset原理_Java集合 --- TreeSet底层实现和原理(源码解析)
  3. 前台特效(3) 编辑表格
  4. Android M App休眠 (adb shell dumpsys usagestats)
  5. Python库:Imageio库(待完善)
  6. Windows系统 notepad命令详解,Windows系统打开记事本
  7. 转︱机器学习算法线上部署方法
  8. 【智能医疗】48页论文详述医学AI最新进展
  9. HTTP协议中GET、POST和HEAD的介绍
  10. 二叉树的层次遍历算法
  11. centos7字体颜色改变_CentOS7.3中设置Shell终端文本外观自定义字体
  12. cad没有命令输入框_cad命令输入框没了(CAD 输入命令栏显示在绘图的屏幕上怎么设置)...
  13. 12123 上传照片到文件服务器失败,12123软件上传不了照片怎么回事(教你最合理的上传方法)...
  14. c++ 智能指针 (std::weak_ptr)(一)
  15. 在CentOS 6.3中安装拼音输入法 详细出处参考:http://www.jb51.net/os/RedHat/73029.html
  16. EasyExcel v2.1.6单元格样式设置
  17. 总结使人进步,遵循事物的发展规律
  18. arguments的用法(介绍)
  19. N1-防火墙的工作原理
  20. N73主相机无法打开解决方法

热门文章

  1. 牛人博客!!!各大招聘网站信息实时查询浏览【转】
  2. ant design后台模板-1.前端环境搭建
  3. 今天遇到一个很奇怪的问题,XP系统屏幕全部旋转90度
  4. GirdView的文本属性对象省略溢出标记设置
  5. Redis为什么变慢了?常见延迟问题定位与分析
  6. 有程序员称:阿里拼多多什么的跟hw相比,性价比都不高.....元芳,你怎么看?...
  7. 卧槽,又一个Java面试神器!!!
  8. 除了负载均衡,Nginx 还可以做很多:限流、缓存、黑白名单等
  9. 花了3个月整理的超级全面的Python资料和Java面试题,分享给大家!
  10. 提升职场价值,把握成长方向