二叉树-路径总和(递归)
题意;
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。
说明: 叶子节点是指没有子节点的节点。
示例:
给定如下二叉树,以及目标和 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);}
}
二叉树-路径总和(递归)相关推荐
- Python3解题:二叉树路径总和问题
Python3解题:二叉树路径总和问题 原题 https://leetcode-cn.com/problems/path-sum-ii/ 给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和 ...
- [二叉树路径总和] 一杯茶一包烟,一个递归转一天
LeetCode 第112题 路径总和 做题记录 题目描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20210409154915348.png?x-oss-pr ...
- [Leetcode][第112题][JAVA][路径总和][递归][队列]
[问题描述][中等] [解答思路] 1. 递归 时间复杂度:O(N) 空间复杂度:O(H) 从根节点开始,每当遇到一个节点的时候,从目标值里扣除节点值,一直到叶子节点判断目标值是不是被扣完. clas ...
- 54. Leetcode 113. 路径总和 II (二叉树-二叉树路径和)
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径.叶子节点 是指没有子节点的节点.示例 1: 输入:root = [5, ...
- 113. 路径总和 (剑指 Offer 34. 二叉树中和为某一值的路径)(回溯算法)
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径. 叶子节点 是指没有子节点的节点. 示例 1: 输入:root = [ ...
- 经典笔试题: 二叉树中和为某一值的路径(路径总和)
微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水. 这两题是相似问题,循序渐进.也是力扣和剑指offer的经典题. 路径总和 题目描述 ...
- 找树左下角的值+路径总和+从前序和中序遍历序列构造二叉树(day18*)
这篇可以主要关注一下如何确定递归时是否需要返回值. LC513. 找树左下角的值 给定一个二叉树的根节点,请找出该二叉树的 最底层最左边 节点的值. 思路1 层序遍历 class Solution:d ...
- Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树
513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...
- 【leetcode-DFS】求根节点到叶节点数字之和/二叉树的最大路径和/路径总和/左叶子之和/树的直径
文章目录 求根节点到叶节点数字之和 深度优先搜索 广度优先搜索 二叉树的最大路径和 DFS 路径总和1 深度优先搜索 广度优先搜索 路径总和2 回溯法 广度优先搜索 左叶子之和 递归 DFS 树的直径 ...
最新文章
- 网络工程师_记录的一些真题_2017下半年上午
- java treeset原理_Java集合 --- TreeSet底层实现和原理(源码解析)
- 前台特效(3) 编辑表格
- Android M App休眠 (adb shell dumpsys usagestats)
- Python库:Imageio库(待完善)
- Windows系统 notepad命令详解,Windows系统打开记事本
- 转︱机器学习算法线上部署方法
- 【智能医疗】48页论文详述医学AI最新进展
- HTTP协议中GET、POST和HEAD的介绍
- 二叉树的层次遍历算法
- centos7字体颜色改变_CentOS7.3中设置Shell终端文本外观自定义字体
- cad没有命令输入框_cad命令输入框没了(CAD 输入命令栏显示在绘图的屏幕上怎么设置)...
- 12123 上传照片到文件服务器失败,12123软件上传不了照片怎么回事(教你最合理的上传方法)...
- c++ 智能指针 (std::weak_ptr)(一)
- 在CentOS 6.3中安装拼音输入法 详细出处参考:http://www.jb51.net/os/RedHat/73029.html
- EasyExcel v2.1.6单元格样式设置
- 总结使人进步,遵循事物的发展规律
- arguments的用法(介绍)
- N1-防火墙的工作原理
- N73主相机无法打开解决方法
热门文章
- 牛人博客!!!各大招聘网站信息实时查询浏览【转】
- ant design后台模板-1.前端环境搭建
- 今天遇到一个很奇怪的问题,XP系统屏幕全部旋转90度
- GirdView的文本属性对象省略溢出标记设置
- Redis为什么变慢了?常见延迟问题定位与分析
- 有程序员称:阿里拼多多什么的跟hw相比,性价比都不高.....元芳,你怎么看?...
- 卧槽,又一个Java面试神器!!!
- 除了负载均衡,Nginx 还可以做很多:限流、缓存、黑白名单等
- 花了3个月整理的超级全面的Python资料和Java面试题,分享给大家!
- 提升职场价值,把握成长方向