当前位置: 首页 > ops >正文

【leetcode】112. 路径总和

文章目录

    • 题目
    • 题解
      • 1. 迭代
      • 2. 递归

题目

112. 路径总和

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

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

在这里插入图片描述

题解

1. 迭代

  1. 判断叶子节点
  2. 将【root,root.val】数组保存,即每个叶子节点保存父节点到叶子节点的和
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def hasPathSum(self, root, targetSum):""":type root: Optional[TreeNode]:type targetSum: int:rtype: bool"""if not root:return Falsestack = []stack.append([root, root.val])while stack:node, cur_sum = stack.pop()if not node.left and not node.right:if cur_sum == targetSum:return True if node.right:stack.append([node.right, cur_sum + node.right.val])if node.left:stack.append([node.left, cur_sum + node.left.val])return False

2. 递归

  1. 判断空节点
  2. 判断叶子节点及其是否等于目标值
  3. 进行递归,targetSum = targetSum - root.val
# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution(object):def hasPathSum(self, root, targetSum):""":type root: Optional[TreeNode]:type targetSum: int:rtype: bool"""if not root:return Falseif not root.left and not root.right and root.val == targetSum:return True return self.hasPathSum(root.left, targetSum - root.val) or self.hasPathSum(root.right, targetSum - root.val)
http://www.xdnf.cn/news/19189.html

相关文章:

  • # `std::basic_istream`总结
  • 基于 MyBatis-Plus 拦截器实现“结账后禁止修改”的优雅方案
  • 数据库的CURD
  • 【C++】红黑树(详解)
  • 【点云工具】CloudCompare学习记录,自用分享
  • Java对接Redis全攻略:Jedis/SpringData/Redisson三剑客对决
  • 机器人控制器开发(底层模块)——rk3588s 的 CAN 配置
  • CSS学习与心得分享
  • 码农特供版《消费者权益保护法》逆向工程指北——附源码级注释与异常处理方案
  • 轻量化模型-知识蒸馏1
  • Carrier Aggregation Enabled MIMO-OFDM Integrated Sensing and Communication
  • Spring Cache实现简化缓存功能开发
  • 内网穿透系列十二:一款基于 HTTP 传输和 SSH 加密保护的内网穿透工具 Chisel ,具备抗干扰、稳定、安全特性
  • 聊一聊 .NET 的 AssemblyLoadContext 可插拔程序集
  • HarmonyOS AppStorage:跨组件状态管理的高效解决方案
  • SW - 做装配体时,使用零件分组好处多
  • 系统架构设计师选择题精讲与解题技巧
  • STM32的内存分配与堆栈
  • compute:古老的计算之道
  • (二)设计模式(Command)
  • 为什么企业需要项目管理
  • Python Requests 爬虫案例
  • 面试问题详解十二:Qt 多线程同步:QMutex讲解
  • SystemVerilog学习【七】包(Package)详解
  • FFmpeg音视频处理解决方案
  • 【GaussDB】在逻辑复制中剔除指定用户的事务
  • 【C++】C++ const成员函数与取地址操作符重载
  • 【Leetcode hot 100】21.合并两个有序链表
  • Flutter MVVM+provider的基本示例
  • ceph配置集群