LeetCode 112. 路径总和
创始人
2025-05-29 04:22:21
0

LeetCode 112. 路径总和

      

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

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

示例 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
解释:树中存在两条根节点到叶子节点的路径:
(1 --> 2): 和为 3
(1 --> 3): 和为 4
不存在 sum = 5 的根节点到叶子节点的路径。

示例 3:

输入:root = [], targetSum = 0
输出:false
解释:由于树是空的,所以不存在根节点到叶子节点的路径。

提示:

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

思路

  • 递归法,较简单
  • 迭代法 - BFS:判断当前节点值是否等于targetSum,如果相等则返回true,否则下探至当前节点的左右子节点,并不断累加之前父节点的值,用于后续比较。

时间复杂度:O(N),其中 N 是树的节点数,对每个节点访问一次。

空间复杂度: O(N),其中 N 是树的节点数。空间复杂度主要取决于队列的开销,队列中的元素个数最多不会超过树的节点数。

/*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/
// 递归法 
func hasPathSum(root *TreeNode, targetSum int) bool {// 走到空了,还没找到累加和为targetSum的路径,那么此路径返回falseif root == nil {return false}if root.Left == nil && root.Right == nil && root.Val == targetSum {return true}// 递归遍历左右子树,寻找符合条件的路径l := hasPathSum(root.Left, targetSum - root.Val)r := hasPathSum(root.Right, targetSum - root.Val)return l || r
}// 迭代法 BFS(queue):判断当前节点值是否等于targetSum,并且当前左右子节点不断累加之前父节点的值,用于后续比较
func hasPathSum(root *TreeNode, targetSum int) bool {if root == nil {return false}queue := []*TreeNode{root}for len(queue) > 0 {root = queue[0]     // topqueue = queue[1:]   // popif root.Left == nil && root.Right == nil && root.Val == targetSum {return true}if root.Left != nil {queue = append(queue, root.Left)root.Left.Val += root.Val}if root.Right != nil {queue = append(queue, root.Right)root.Right.Val += root.Val}}return false
}

 路径总和 系列题目:

  • LeetCode 112. 路径总和
  • LeetCode 113. 路径总和 II(剑指 Offer 34. 二叉树中和为某一值的路径)
  • LeetCode 437. 路径总和 III

相关内容

热门资讯

大数据学习(2) 大数据学习(2)0 数据仓库0.0 数据仓库基本概念0.1 数据仓库主要...
最新或2023(历届)小学生关... 小学生关于法制手抄报的图片模板  小学生关于法制手抄报图片1  小学生关于法制手抄报图片2  小学生...
【spring】javaCon... 目录一、xml形式二、javaConfig形式三、源码分析 一、xml形式 1.spring容器为...
最新或2023(历届)有关法制... 有关法制手抄报的图片模板  有关法制手抄报图片1  有关法制手抄报图片2  有关法制手抄报图片3  ...
最新或2023(历届)有关法制... 有关法制手抄报的图片参考  有关法制手抄报参考图片(1)  有关法制手抄报参考图片(2)  有关法制...
最新或2023(历届)初中生法... 初中生法制手抄报的图片参考  初中生法制手抄报参考图片(1)  初中生法制手抄报参考图片(2)  初...
最新或2023(历届)初中生法... 初中生法制手抄报的图片模板  初中生法制手抄报图片1  初中生法制手抄报图片2  初中生法制手抄报图...
2022湖北省赛 L 裸线段树 有人不会裸线段树有人没有pushdown调了两小时裸线段树早该414了L (codeforces.c...
最新或2023(历届)初中生法... 初中生法制手抄报的图片模板  初中生法制手抄报图片1  初中生法制手抄报图片2  初中生法制手抄报图...
Chapter2.3:线性表的... 该系列属于计算机基础系列中的《数据结构基础》子系列,参考书《数据结构考研复习指导》(王...
最新或2023(历届)初中生法... 初中生法制手抄报的图片参考  初中生法制手抄报参考图片(1)  初中生法制手抄报参考图片(2)  初...
最新或2023(历届)关于简单... 关于简单的法制教育手抄报的图片模板  关于简单的法制教育手抄报图片1  关于简单的法制教育手抄报图片...
最新或2023(历届)关于简单... 关于简单的法制教育手抄报的图片参考  关于简单的法制教育手抄报参考图片(1)  关于简单的法制教育手...
最新或2023(历届)中学生法... 中学生法制教育手抄报的图片模板  中学生法制教育手抄报图片1  中学生法制教育手抄报图片2  中学生...
多种方法跳出线程发包         明文发包CALL是分析一款游戏功能的主要突破口,但是很多游戏都是线程发...
GDKOI2023 D1T1 前言 考场上没想出来,收到来自题目标题的嘲讽 题目大意 求 ∑i=1ni!ik...
Java 造轮子例子 1.要规范地造好一个轮子,以下是一些步骤和建议: 确定你的轮子的功能和用...
最新或2023(历届)中学生法... 中学生法制教育手抄报的图片参考  中学生法制教育手抄报参考图片(1)  中学生法制教育手抄报参考图片...
KubeSphere 社区双周... KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 ...
最新或2023(历届)中学生法... 中学生法制教育手抄报的图片模板  中学生法制教育手抄报图片1  中学生法制教育手抄报图片2  中学生...