微信搜一搜bigsai
大家都在关注的刷题、学习数据结构和算法宝藏项目
关注回复进群即可加入力扣打卡群,欢迎划水。

这两题是相似问题,循序渐进。也是力扣和剑指offer的经典题。

路径总和

题目描述(题目链接)
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true

示例 2:

输入:root = [1,2,3], targetSum = 5
输出:false

示例 3:

输入:root = [1,2], targetSum = 0
输出:false

提示:

树中节点的数目在范围 [0, 5000] 内
-1000 <= Node.val <= 1000
-1000 <= targetSum <= 1000

分析
对于这种判断的,只要有一个满足条件的即可,在遍历路径上肯定使用dfs遍历。向下一层的时候就处理一下当前层的值,这样有一个满足的结果那么就可以返回true。当然,这里我就没有剪枝,如果有正确结果的话也可停止递归判断。

具体实现的代码为:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public boolean hasPathSum(TreeNode root, int targetSum) {if(root==null)return false;int value=targetSum-root.val;if(root.left==null&&root.right==null){if(value==0)return true;}else {return hasPathSum(root.left,value)||hasPathSum(root.right, value);}return false;}
}

路径总和Ⅱ

题目描述(题目链接)
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

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

示例:

给定如下二叉树,以及目标和 sum = 22,5/ \4   8/   / \11  13  4/  \    / \7    2  5   1
返回:[[5,4,11,2],[5,8,4,5]
]

分析:

这个问题就是要求返回所有满足要求的结果,和上题略有不同就是需要找到所有结果并且保存,保存结果的话我们就需要一个List<Integer>存储遍历的结果,而List<List<Integer>>用来存储所有的结果,所以在递归回溯的过程中就需要借助回溯的过程经过每一个状态,满足状态的就将这个List复制到结果集中去,需要返回的时候还需要移除当前层加入的结果。

具体实现的代码为:

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {List<Integer> team = new ArrayList<Integer>();List<List<Integer>> value = new ArrayList<List<Integer>>();public List<List<Integer>> pathSum(TreeNode root, int targetSum) {if (root == null)return value;team.add(root.val);targetSum-=root.val;if(targetSum==0&&root.left==null&&root.right==null){value.add(new ArrayList<Integer>(team));}pathSum(root.left, targetSum);pathSum(root.right, targetSum);team.remove(team.size()-1);return value;}
}

原创不易,bigsai请你帮两件事帮忙一下:

  1. star支持一下, 您的肯定是我在平台创作的源源动力。

  2. 微信搜索「bigsai」,关注我的公众号,不仅免费送你电子书,我还会第一时间在公众号分享知识技术。加我还可拉你进力扣打卡群一起打卡LeetCode。

记得关注、咱们下次再见!

经典笔试题: 二叉树中和为某一值的路径(路径总和)相关推荐

  1. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  2. 【转载】经典10道c/c++语言经典笔试题(含全部所有参考答案)

    经典10道c/c++语言经典笔试题(含全部所有参考答案) 1. 下面这段代码的输出是多少(在32位机上). char *p; char *q[20]; char *m[20][20]; int (*n ...

  3. [转载] 硬件工程师经典笔试题集锦---(张飞实战电子)

    [别找了全在这]硬件工程师经典笔试题集锦! 直转链接:https://www.sohu.com/a/312704438_819258 数字电路知识问题,请简要回答之. (1) 什么是 Setup和 H ...

  4. 嵌入式常见经典笔试题

    嵌入式常见经典笔试题 2012-1-6 15:09:49    收藏  |  打印  | 投票(0)  |  评论(0)  |  阅读(130)  ◇字体:[大 中 小] 预处理器(Preproces ...

  5. 动态内存分配——经典笔试题

    文章目录 经典笔试题 1.未返回地址导致开辟无效 2.返回栈空间地址问题 3.内存泄漏 4.提前释放导致的非法访问 经典笔试题 1.未返回地址导致开辟无效 #include<stdio.h> ...

  6. java经典笔试题大全(50道含答案)

    java经典笔试题大全(50道含答案)整理了一套常用的Java笔试题,选择题50道,简答题5道,试试你能做对多少题吧,含答案. 选择题(共50题,每题1.5分,共75分.多选题选不全或选错都不得分.) ...

  7. mysql经典笔试题

    sql数据库经典笔试题 题目一 解答: select avg(eglish) from mark; select mark.math,cust.Name,cust.Address,cust.Telno ...

  8. 剑指offer:面试题34. 二叉树中和为某一值的路径

    题目:二叉树中和为某一值的路径 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径. 示例: 给定如下二叉树,以及目标和  ...

  9. 【LRD,DLR】BST的后续遍历序列,二叉树中和为某一值的路径

    D是Degree,后续遍历就是LRD,前序遍历就是DLR. 面试题33:BST的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false. ...

最新文章

  1. UIView旋转角度
  2. oracle中那个日期怎么相减_oracle数据库中日期加减函数
  3. Earth Wind and Fire CodeForces - 1148E (构造)
  4. db2dual_db2 oracle 创建 序列 | 学步园
  5. oracle 的自增需要依靠序列和触发器共同实现
  6. AngularJS 快速入门
  7. xp计算机如何查看内存大小,xp如何查看内存大小
  8. 京东后台图片优化技巧
  9. MATLAB怎么求非线性度误差,用Matlab进行最小二乘法线性拟合(求传感器非线性误差、灵敏度)...
  10. MIUI12系统怎么样开启Root超级权限的流程
  11. 亚马逊广告投放策略卖家们知多少?
  12. matlab的死区环节,基于SIMULINK对非线性系统死区环节进行仿真
  13. [计算机视觉] AprilTag: A robust and flexible visual fiducial system(2011)论文理解
  14. 通用键盘鼠标模拟(包括USB和PS2)
  15. <转>OSPF OE2和OE1外部路由详解(主要解释了下OE2为什么没默认负载均衡)
  16. idea光标变黑,不能敲代码
  17. Kindeditor上传图片成功,但显示上传失败
  18. 硬件1--增益和放大倍数的关系
  19. C语言计算级数fun,c语言编程 编写函数fun(),它的功能是:计算和输出下列级数的和....
  20. bat 执行带中文路径的解决方法 附加pc微信双开bat

热门文章

  1. 【Flask】数据的CRUD之增加和查询操作
  2. python—多线程定义和创建(一)
  3. 7-CPU Reset
  4. [工具]-电脑磁盘爆满了,但又不知道哪些文件占用的空间,怎么办?
  5. C语言:构建一个二级链表并完成增删改查
  6. 密码学基础知识(七)公钥密码
  7. 【漏洞实战】从信息泄露到内网滲透
  8. 010 Android之逆向入门
  9. Thinkphp 打印最近执行的一条SQL语句
  10. 【prometheus API】删除指定指标数据