首页 > 其他分享 >路径总和-112

路径总和-112

时间:2024-09-16 14:23:44浏览次数:9  
标签:sum 路径 list targetSum 112 null root 节点 总和

题目描述

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

解题思路

我们这题采用任何一种遍历方式都是可以的,这题同样是有回溯的思想,如果不太懂的话可以去看看前面《求二叉树的左右路径》这一题,我们先去遍历左子树,遍历的时候如果节点的左右子树都为空说明我们已经到了叶子节点,此时我们就可以做判断了,看看是不是和我们的targetSum一致,如果不一致则它的父节点会产生回溯去遍历父节点的另一个子树,同样再去看看是否和targetSum是否一致,如果一致就可以直接填写结果,不一致则继续由它们的父节点回溯去判断另一颗子树。

代码实例

class Solution {
    public boolean judge = false;

    public boolean hasPathSum(TreeNode root, int targetSum) {
        List<Integer> list = new ArrayList<>();
        if(root==null){
            return false;
        }else{
            list.add(root.val);
            bianli(root, targetSum, list);
            return judge;
        }

    }

    public void bianli(TreeNode root, int targetSum, List<Integer> list) {
        if (root.left == null && root.right == null) {
            if (sum(list) == targetSum) {
                judge = true;
                return;
            }
        }
        
        if (root.left != null) {
            list.add(root.left.val);
            bianli(root.left, targetSum, list);
            list.remove(list.size() - 1);
        }

        if (root.right != null) {
            list.add(root.right.val);
            bianli(root.right, targetSum, list);
            list.remove(list.size() - 1);

        }

    }

    public int sum(List<Integer> list) {
        int sum = 0;
        for (Integer in : list) {
            sum += in;
        }
        return sum;
    }

}

标签:sum,路径,list,targetSum,112,null,root,节点,总和
From: https://www.cnblogs.com/dfj-blog/p/18416256

相关文章

  • 上海登陆最强台风 & 台风路径追踪 All In One
    上海登陆最强台风&台风路径追踪AllInOne上海最强台风路径追踪中央气象台、市气象服务中心介绍,今年第13号台风“贝碧嘉”(强台风级)的中心已于今天(2024年09月16日)7点30分前后在上海浦东临港新城登陆,登陆时中心附近最大风力14级(42米/秒),中心最低气压为955百帕。“贝碧嘉”也超......
  • 二叉树的所有路径(所有从根节点到叶子节点的路径)-257
    题目描述给你一个二叉树的根节点root,按任意顺序,返回所有从根节点到叶子节点的路径。叶子节点是指没有子节点的节点。解题思路这道题我们采用二叉树里的前序遍历方式,我们要遍历所有到叶子节点的路径,我们采用复用的思想,就是让这里的几个数据结构我们可以重复使用,但是重复使......
  • Field D* 路径规划
    D*算法D*算法是用于路径规划的增量式搜索算法,旨在解决在环境中有障碍物动态变化时的路径规划问题。D*算法的主要思想是在每次环境状态变化时,只更新受影响的部分路径,而不必重新规划整个路径。D*算法的核心概念包括:代价函数:通常包括实际代价函数 g 和备用代价函数 rhs......
  • 【数据结构和算法实践-树-LeetCode113-路径总和Ⅱ】
    数据结构和算法实践-树-LeetCode113-路径总和Ⅱ题目MyThought代码示例JAVA-8题目给你二叉树的根节点root和一个整数目标和targetSum,找出所有从根节点到叶子节点路径总和等于给定目标和的路径。叶子节点是指没有子节点的节点输入:root=[5,4,8,11,null,13......
  • 路径规划 | 基于A*算法的往返式全覆盖路径规划的改进算法(Matlab)
    目录效果一览基本介绍程序设计参考文献效果一览基本介绍基于A*算法的往返式全覆盖路径规划的改进算法matlab实现代码往返式全覆盖路径规划,通过建立二维栅格地图,设置障碍物,以及起始点根据定义往返式路径规划的定义的优先级运动规则从起始点开始进行全图遍历,利用A星算法逃离死角......
  • 网约车APP开发指南:基于同城代驾系统源码的实现路径
    基于同城代驾系统源码进行二次开发,不仅可以缩短开发周期,还能节省成本,提高市场竞争力。本篇文章,小编将详细解析如何基于同城代驾系统源码实现一款高效的网约车APP。 一、项目背景及需求分析在开发网约车APP之前,首先需要明确应用的定位与目标用户群体。网约车服务的需求主要集中在城......
  • powershell@路径处理相关命令@路径拆分@路径解析@路径拼接@路径判断
    文章目录abstract一览表常用的路径处理场景重点路径处理命令1.Split-Path2.Convert-Path3.Join-Path4.Resolve-Path5.Test-Pathrvpavscvpa总结对比powershellprovider@powershell提供程序abstract在PowerShell中,处理路径相关的命令十分丰富,它们可以帮助我们管理、解析......
  • blazor路径
    Blazor遵循ASP.NETCore应用对于静态资产的约定。静态资产位于项目的 webroot (wwwroot)文件夹中或是 wwwroot 文件夹下的文件夹中。使用基相对路径(/)来引用静态资产的Web根。在下面的示例中,logo.png 实际位于 {PROJECTROOT}/wwwroot/images 文件夹中。 {PR......
  • P4551 最长异或路径(树上前缀异或01-trie)
    #include<bits/stdc++.h>usingnamespacestd;#definexfirst#defineysecondtypedefpair<int,int>PII;typedeflonglongll;typedefunsignedlonglongull;typedefunsignedintuint;typedefvector<string>VS;typedefvector<int>......
  • PbootCMS后台常用文件修改路径
    在PBootCMS中,后台界面的许多元素都是通过模板文件来定义的,因此如果你需要对后台界面进行定制化修改,比如修改文字内容、调整布局等,就需要编辑这些模板文件。以下是几个常用的文件及其用途:常用文件及用途登录页页面修改路径:apps\admin\view\default\index.html用途:这个文件负......