重温算法之路径总和

简介: 关于二叉树的题目,深度优先和广度优先是最佳首选,其次就是利用hash或者栈的特点结合,也可以快速解决问题,另外还是没有找到之前动态二叉树的网站,估计已经没了,不然更加容易理解。

微信截图_20220531173728.png


一.题目介绍


1.题目来源


链接:LeetCode


2.题目


给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。叶子节点是指没有子节点的节点。

微信截图_20220531195639.png


二.具体实现


1.实现思路


思路就是深度优先,当树不为空时,先找到叶子节点,然后往左子树搜索再往右子树搜索,如果目标值与节点数之差为0则代表找到了符合条件的即存在,反子则不存在。


2.实现代码


1)自己的实现方式

public boolean hasPathSum(TreeNode root, int targetSum) {
    if (root == null) {
        return false;
    }
    return dfs(root, targetSum);
}
private boolean dfs(TreeNode root, int num) {
    //递归的边界 节点为null
    if (root.left == null && root.right == null){
        return (num - root.val) == 0;
    }
    //往左子树搜索
    if (root.left != null && dfs(root.left,num - root.val)){
        return true;
    }
    //往右子树搜索
    if (root.right != null && dfs(root.right,num - root.val)){
        return true;
    }
    return false;
}
复制代码


2)题友的实现方式


将其转换成求解从root.left或者root.right到叶子节点是否存在路径和为sum-root.val的路径,即 hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val)

微信截图_20220531195720.png


3.运行结果

微信截图_20220531195758.png

微信截图_20220531195834.png


三.题后思考


关于二叉树的题目,深度优先和广度优先是最佳首选,其次就是利用hash或者栈的特点结合,也可以快速解决问题,另外还是没有找到之前动态二叉树的网站,估计已经没了,不然更加容易理解。

目录
相关文章
|
7月前
|
传感器 算法 自动驾驶
混合A*运动规划算法:路径规划和路径跟踪-MPC-LQR-PID算法
混合A*运动规划算法:路径规划和路径跟踪-MPC-LQR-PID算法
混合A*运动规划算法:路径规划和路径跟踪-MPC-LQR-PID算法
|
7月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
7月前
|
算法 测试技术 C++
【动态规划】【图论】【C++算法】1575统计所有可行路径
【动态规划】【图论】【C++算法】1575统计所有可行路径
|
7月前
|
算法
【算法优选】 动态规划之路径问题——贰
【算法优选】 动态规划之路径问题——贰
|
7月前
|
算法
算法修炼-动态规划之路径问题(1)
算法修炼-动态规划之路径问题(1)
|
6月前
|
存储 SQL 算法
LeetCode题目113:多种算法实现 路径总和ll
LeetCode题目113:多种算法实现 路径总和ll
|
2月前
|
数据采集 监控 安全
厂区地图导航制作:GIS技术与路径导航算法融合
在智能化、数字化时代,GIS技术为厂区的运营管理带来了革命性变化。本文探讨了如何利用GIS技术,通过数据采集、地图绘制、路径规划、位置定位和信息查询等功能,打造高效、精准的智能厂区地图导航系统,提升企业的竞争力和管理水平。
59 0
厂区地图导航制作:GIS技术与路径导航算法融合
|
4月前
|
算法
基于多路径路由的全局感知网络流量分配优化算法matlab仿真
本文提出一种全局感知网络流量分配优化算法,针对现代网络中多路径路由的需求,旨在均衡分配流量、减轻拥塞并提升吞吐量。算法基于网络模型G(N, M),包含N节点与M连接,并考虑K种不同优先级的流量。通过迭代调整每种流量在各路径上的分配比例,依据带宽利用率um=Σ(xm,k * dk) / cm来优化网络性能,确保高优先级流量的有效传输同时最大化利用网络资源。算法设定收敛条件以避免陷入局部最优解。
|
6月前
|
存储 算法 Unix
掌握Unix路径简化:五种有效算法比较【python力扣71题】
掌握Unix路径简化:五种有效算法比较【python力扣71题】
|
6月前
|
存储 算法 机器人
路径规划的艺术:不同路径 II 的算法深掘【python力扣63题】
路径规划的艺术:不同路径 II 的算法深掘【python力扣63题】