首页 > 编程语言 >【数据结构和算法实践-树-LeetCode112-路径总和】

【数据结构和算法实践-树-LeetCode112-路径总和】

时间:2024-09-18 12:51:00浏览次数:12  
标签:node false 递归 LeetCode112 算法 targetSum preSum 数据结构 节点

数据结构和算法实践-树-LeetCode112-路径总和

题目

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

My Thought

题目限定的条件为是否存在到叶子节点的路径总和与目标相等:
一、到叶子节点的时候,是不是会等于给定的sum
二、如果有一条相等就算是通过,所以要设置一个全局变量
三、处理过程递归就是当前值、左节点、右节点
然后再进行递归,递归要注意两个方面:
一、自我调用
二、终止条件:即函数边界
注意点:树、递归

代码示例

JAVA-8

    /**
     * 一、到叶子节点的时候,是不是会等于给定的sum
     * 二、如果有一条相等就算是通过,所以要设置一个全局变量
     * 三、处理过程递归就是当前值、左节点、右节点
     */
    public static boolean isSum = false;

    public static boolean hasPathSum(TreeNode root, int sum) {
        if (root == null) {
            return false;
        }
        isSum = false;
        process(root, 0, sum);
        return isSum;
    }

    private static void process(TreeNode node, int preSum, int targetSum) {
        if (node == null) {
            return;
        }
        if (node.left == null && node.right == null) {
            if (node.val + preSum == targetSum) {
                isSum = true;
            }
            return;
        }
        preSum += node.val;
        process(node.left, preSum, targetSum);
        process(node.right, preSum, targetSum);
    }

标签:node,false,递归,LeetCode112,算法,targetSum,preSum,数据结构,节点
From: https://blog.csdn.net/Mao_c/article/details/142208478

相关文章

  • 最优化理论与自动驾驶(十一):基于iLQR的自动驾驶轨迹跟踪算法(c++和python版本)
    最优化理论与自动驾驶(四):iLQR原理、公式及代码演示之前的章节我们介绍过,iLQR(迭代线性二次调节器)是一种用于求解非线性系统最优控制最优控制最优控制和规划问题的算法。本章节介绍采用iLQR算法对设定的自动驾驶轨迹进行跟踪,与第十章节纯跟踪算法采用同样跟踪轨迹,同时,我们仅对控......
  • 安全帽佩戴识别算法
    安全帽佩戴识别算法采用SuiJi-AI人工智能深度学习技术+计算机智能视觉识别算法,且通过规模化的安全帽数据识别训练。安全帽佩戴识别算法借助现场已有的监控摄像头对监控画面中人员着装行为进行实时分析识别。假如检测人员不戴安全帽,SuiJiAi将立即记录和警报,并可将纪录数据推送到后......
  • 各种数据结构以及七七八八的东西
    堆堆(一般指二叉堆),实质就是一颗完全二叉树,用来维护单调性堆可以实现插入新值,得到最值(直接取堆顶值),删除最值。插入新值,从堆尾插入,不断比较上浮;删除最值,就是将堆顶替换掉,可以用堆尾替换,并不断比较下沉,用树的深度的时间花销维护堆的单调性感受一下维护堆的过程,可以用数组实现(一......
  • 文心一言 VS 讯飞星火 VS chatgpt (349)-- 算法导论23.2 8题
    八、Borden教授提出了一个新的分治算法来计算最小生成树。该算法的原理如下:给定图,将划分为两个集合和,使得和的差最多为1。设为端点全部在中的边的集合,为端点全部在中的边的集合。我们递归地解决两个子图和的最小生成树问题。最后,在边集合中选择横跨切割和的最小权重的边来将求出的......
  • 中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间
    中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测目录中秋献礼!2024年中科院一区极光优化算法+分解对比!VMD-PLO-Transformer-LSTM多变量时间序列光伏功率预测效果一览基本介绍程序设计参考资料效果一览......
  • 【聚类算法】基于网格的聚类
    目录一、基于网格的聚类聚类算法概述二、基于网格的聚类聚类算法优缺点和改进2.1 基于网格的聚类聚类算法优点2.2 基于网格的聚类聚类算法缺点2.3 基于网格的聚类聚类算法改进三、基于网格的聚类聚类算法代码实现3.1 基于网格的聚类聚类算法C语言实现3.2 基于网格......
  • 【图像拼接】基于SIFT/SURF特征算法的图像拼接,matlab实现
         博主简介:matlab图像代码项目合作(扣扣:3249726188)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       本次案例是基于SIFT/SURF特征算法的图像拼接,用matlab实现。 一、案例背景和算法介绍       前面的博客文章......
  • 数据结构(二叉树)练习题————考前必备合集
    今天在力扣和牛客网上找了一下题,下面附上题目链接,大家先做题再看答案1.检查两颗树是否相同。100.相同的树-力扣(LeetCode)2.另一颗树的子树。572.另一棵树的子树-力扣(LeetCode)3.翻转二叉树。226.翻转二叉树-力扣(LeetCode)4.判断一颗二叉树是否是平衡二叉树。110.......
  • 【Java 优选算法】双指针(下)
    欢迎关注个人主页:逸狼创造不易,可以点点赞吗~如有错误,欢迎指出~有效三角形的个数题目链接解法解法1:暴力枚举--->O(n^3)解法2:利用单调性,使用双指针来解决---->O(n^2)优化:对整个数组进行排序先固定最大数在最大数的左区间内,使用双指针算法,快速统计出符合要......
  • 代码随想录算法训练营第六十天 | Bellman_ford之判断负权回路
    目录Bellman_ford之判断负权回路思路常规拓展方法一: Bellman_ford-超时方法二:Bellman_ford2方法三:Bellman_ford队列优化Bellman_ford之判断负权回路题目链接:卡码网:95.城市间货物运输II文章讲解:代码随想录 某国为促进城市间经济交流,决定对货物运输提供......