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

112. 路径总和

时间:2023-12-11 11:23:14浏览次数:33  
标签:right return sum 路径 112 left root 节点 总和

目录

题目

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

法一、DFS

  • 判断当前节点是否为叶子节点,如果是叶子节点,判断当前叶子节点的值是否 = sum 减去之前路径上节点值。
    递归左子树。
    递归右子树。
class Solution(object):
    def hasPathSum(self, root, sum):
        if not root: return False#根节点为空
        if not root.left and not root.right:#若为叶子结点判断sum是否等于当前结点值
            return sum == root.val
        return self.hasPathSum(root.left, sum - root.val) or self.hasPathSum(root.right, sum - root.val)#如果不是叶子结点,递归判断左子树和右子树

法二、回溯

  • 这里的回溯指 利用 DFS 找出从根节点到叶子节点的所有路径,只要有任意一条路径的 和 等于 sum,就返回 True。
class Solution(object):
    def hasPathSum(self, root, sum):
        if not root: return False
        res = [] #选择列表
        return self.dfs(root, sum, res, [root.val])
        
    def dfs(self, root, target, res, path):#传入根节点、目标值、选择列表和路径列表
        if not root: return False
        if sum(path) == target and not root.left and not root.right:#如果当前的路径列表path的和等于目标值,并且当前结点是叶子结点,返回True
            return True
        left_flag, right_flag = False, False
        if root.left:#如果存在左子树(可以避免访问空节点的值属性而导致错误)
            left_flag = self.dfs(root.left, target, res, path + [root.left.val])#递归调用dfs,传入左子树、目标值、选择列表和加上左子节点的路径列表
        if root.right:
            right_flag = self.dfs(root.right, target, res, path + [root.right.val])
        return left_flag or right_flag

标签:right,return,sum,路径,112,left,root,节点,总和
From: https://www.cnblogs.com/lushuang55/p/17893951.html

相关文章

  • 12.2迪杰斯特拉方法实现最短路径
    掌握迪杰斯特拉方法设计文档 代码#include<iostream>usingnamespacestd;//迪杰特斯拉:邻接矩阵:一维数组+二维数组+点边数typedefintVexType;#defineMVNum100#defineMaxInt32767intS[MVNum],Path[MVNum],D[MVNum];//迪杰特斯拉的三个数组typedefstruct{......
  • Windows 11命令提示符cmd,默认路径修改
    前言全局说明cmd命令提示符终端,启动默认目录是当前用户的目录下。为了方便使用,默认修改成其他路径一、cmd默认路径默认路径是%USERPROFILE%,如果为空“就使用父路径”二、设置成环境变量值路径%TEMP%设置后,记得点保存效果:如何获取系统变量和系统变量列表:https://......
  • 20_路径总和
    路径总和给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。叶子节点是指没有子节点的节点。示例1:输入:root=[5,4,8,11,null,......
  • 路径计数2
    路径计数2题目描述一个的网格,你一开始在,即左上角。每次只能移动到下方相邻的格子或者右方相邻的格子,问到达,即右下角有多少种方法。但是这个问题太简单了,所以现在有个格子上有障碍,即不能走到这个格子上。输入格式输入文件第行包含两个非负整数,表示了网格的边长与障碍数。......
  • Spring Boot学习随笔- @SpringBootApplication详解、加载绝对路径配置文件、工厂创建
    学习视频:【编程不良人】2021年SpringBoot最新最全教程3.5@SpringBootApplication详解这是一个组合注解,就是由多个注解组成。下列注解红框内称为元注解(jdk提供)@Target:指定注解作用范围@Retention:指定注解什么时候生效重要注解@SpringBootConfiguration:自动配置Spring......
  • 最短路径
    #include<iostream>#include<cstring>#include<cstdio>usingnamespacestd;constintN=1010;structedge{intv,w;edge*next;};structnode{intk;edge*next;}a[1010];intn;intfind(intu){for(inti=0;i<n;i++){if(a......
  • 路径规划算法 - 求解最短路径 - A*(A-Star)算法
    Dijkstra(迪杰斯特拉)算法A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。A*算法是一个“搜索算法”,实质上是广度优先搜索算法(BFS)的优化A*算法的作用是“求解最短路径......
  • 【Docker】更改docker镜像的存储路径
    1.查看Docker存储路径dockerinfo|grep"DockerRootDir"2.关闭所有运行的容器···dockerps|awk'{print$1}'|xargsdockerstop···3.停止docker服务systemctlstopdocker4.新增的磁盘挂载点上新建目录,并将原有的docker容器和镜像全部拷贝过来,比如这里新增......
  • [Re221127周任务]认识寄存器
    1.分析逻辑 我们一个一个点进去看 我们这里是加密过程并且加密后直接与输入对比的,所以我们可以直接动调2.动调 下在这里就好了 点进去eax就有flag了 注意这个flag是不包括上面那个1的 ......
  • wamp修改站点路径,php服务器修改路径
    一、修改apache目录下载好WampServer后,它默认网站根目录是:“D:/wamp/www”(示例若不同点击右下角的wampserver有个www目录即默认网站根目录)打个比方,我现在要把网站根目录改为“E:/study”1.打开 D:\wamp\bin\apache\apache2.4.23\conf(本机示例)中的httd.conf......