LeetCode算法题-Path Sum(Java实现)

【LeetCode】Binary Tree Maximum Path Sum 解题报告 【题目】 Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. For example: Given the below binary tree, 1 / \ 2 3 Re 阅读详情

这是悦乐书的第169次更新,第171篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第28题(顺位题号是112)。给定二叉树和整数sum,确定树是否具有根到叶路径,使得沿路径的所有值相加等于给定的sum。叶子节点是没有子节点的节点。例如:

给定以下二叉树和sum = 22,

            5
          /   \
         4     8
        /     /  \
      11     13   4
     / \           \
    7   2           1

返回true,因为存在根到叶的路径5-> 4-> 11-> 2,并且和为22。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

特殊情况一:当二叉树为空时,直接返回false。

特殊情况二:当二叉树只有一个节点时,即此节点为根节点,并且节点值等于sum,返回true。

正常情况:对于此题,遍历二叉树的节点时,需要使用深度优先的算法,我们可以借助递归,并且上面两种特殊情况也是递归的终止条件。对于从根节点进来的左右子树,可以同时进行递归,每次对相应的节点做减法,直到满足上面的特殊情况二为止。

public boolean hasPathSum(TreeNode root, int sum) {
    if(root == null ){
        return false;
    }
    if (root.left == null && root.right == null && (sum - root.val) == 0) {
        return true;
    }
    return hasPathSum(root.left, sum-root.left.val) || hasPathSum(root.right, sum-root.right.val);
}

03 第二种解法

除了上面的递归,我们是否可以用迭代的方法呢?答案是可以的。

因为还是需要满足深度优先,所以我们单独使用了一个队列来放每条路径上的各节点之和,在每次取出一个节点的时候,同时取出一个和来,判断此节点是否为叶子节点并且判断和是否等于sum。

public boolean hasPathSum2(TreeNode root, int sum) {
    if(root == null ){
        return false;
    }
    Queue<TreeNode> queue = new LinkedList<>();
    Queue<Integer> sums = new LinkedList<>();
    queue.offer(root);
    sums.offer(root.val);
    while(!queue.isEmpty()) {
        TreeNode t = queue.poll();
        int temSum = sums.poll();
        if (t.left == null && t.right == null && temSum == sum) {
            return true;
        }
        if (t.left != null) {
            queue.offer(t.left);
            sums.offer(temSum + t.left.val);
        }
        if (t.right != null) {
            queue.offer(t.right);
            sums.offer(temSum + t.right.val);
        }
    }
    return false;
}

04 小结

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

告别手动配置!用Vector vLinkGen 2.1.0自动生成AUTOSAR链接脚本(附bss段配置详解) 本文详细介绍了如何使用Vector vLinkGen 2.1.0工具自动生成AUTOSAR链接脚本,告别繁琐的手动配置。通过解析vLinkGen的核心架构和bss段配置实践,帮助开发者提升嵌入式软件开发效率,支持多种主流编译器,实现精确的内存分配和初始化策略。 阅读详情

相关推荐

泛微 OA - 根据流程 requestid 获取流程中的附件

在泛微 OA 流程中,附件是通过加密上传的,如果在第三方系统想要调用 OA 系统获取 OA 附件,暂时没有很好的方法实现。但是可以在本地进行调用,得到附件信息,拿到这些信息后,可以用过 url 地址在本地下载。

小松鼠的博客 5838

112. 路径总和(Java)

给你二叉树的根节点root和一个表示目标和的整数targetSum。判断该树中是否存在的路径,这条路径上所有节点值相加等于目标和targetSum。如果存在,返回true;否则,返回false。是指没有子节点的节点。true等于目标和的根节点到叶节点路径如上图所示。false树中存在两条根节点到叶子节点的路径:(1 --> 2): 和为 3(1 --> 3): 和为 4不存在 sum = 5 的根节点到叶子节点的路径。false由于树是空的,所以不存在根节点到叶子节点的路径。

Balenciage的博客 1188

结构设计3D拆件与骨架模型构建实战:基于Creo 8.0的5个高效建模技巧

本文详细解析了基于Creo 8.0的结构设计3D拆件与骨架模型构建实战技巧,涵盖5个高效建模方法,包括参数化驱动、曲面分割、多实体协同设计等。通过骨架模型的智能应用,设计效率可提升30%以上,特别适合复杂产品的结构设计。文章还提供了TWS耳机充电仓等实战案例,帮助工程师快速掌握工业设计中的核心建模技术。

weixin_30000735的博客 575

4.12 求和路径

     《程序员面试金典》(第六版)习题:仅为记录一下以加强印象,不为商业用途,如有侵权请联系删除。以下源码和解释参考了书中源码以及解释。      以下蛮力法利用递归统计从二叉树中每一个节点开始的满足题设要求的路径数,然后求其和即为所求。当二叉树平衡的时候,计算从根节点(第一层)开始的满足题设要...

caoleiwe的博客 338

光伏发电系统模拟及其发电预测开源python工具pvlib

本文介绍光伏发电系统模拟及其发电预测开源python工具pvlib,以及举例介绍获取辐照度方法、光伏发电预测思路。

肖永威的专栏 1万+

Android 13高通平台CTS camera部分fail项修改(续)

接着上一篇,有几个提了case高通也分析了很久的fail项,其中最离谱的是问题1,第一个接手case的人反反复复处理、内部排查踢皮球、要求log,折腾了很久,最终就给出个解不了的结论。后面还是靠着自己发现了一些蛛丝马迹,并且换了个case接手人才最终解决。

hkj887tg的博客 2061

LeetCode OJ:Path Sum(路径之和)

Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum. For example:Given the below binary tree andsum = ...

weixin_33994429的博客 126

MACS2软件进行Peak calling

MACS2可以检出ChIP-Seq,ATAC-seq 以及 MeRIP-seq (RNA甲基化测序) 等富集的序列。peaks calling 有不同的方法,MACS2是最常用的call peaks工具。 MACS全称Model-based Analysis of ChIP-Seq,最初的设计是用来鉴定转录因子的结合位点,但是它也可以用于其他类型的富集方式测序。usage: macs2 [-h] [--version] {callpeak,bdgpeakcall,bdgbroadca

qq_27390023的博客 3791

2020-11-27

java基础知识 今日内容介绍 选择流程控制语句 循环流程控制语句 控制循环语句 第1章选择流程控制语句 1.1顺序结构的基本使用 1.1.1顺序结构概述 是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的 1.1.2顺序流程流程图 1.1.3代码案例一 package com.itheima_01; /* 顺序结构:从上往下,依次执行 */ public class OrderDemo { public static void mai

qq_51161108的博客 263

Quest 3开发第一步:搞定Meta账号登录和Oculus软件连不上设备的那些坑(2024实测)

本文详细介绍了Quest 3开发初期的关键步骤,包括Meta账号注册、Oculus软件安装与设备连接等常见问题的解决方案。针对国内开发者遇到的邮箱限制、验证码接收等难题,提供了实用的应对策略,并分享了开发环境配置和常见问题排查技巧,帮助开发者快速搭建Quest 3开发环境。

weixin_30333885的博客 501

YOLOv12 改进 | Backbone改进 3

将CSP中的简单拼接改为可学习的特征选择门控,动态决定哪些特征流向下一层,同样再写这篇。:相比静态CSP的固定50/50分割,门控机制可学习0.3:0.7等最优比例。在输入端加入轻量SR模块,对下采样后的特征进行超分恢复,提升小目标检测能力。(小目标): 从 0.51 AP → 0.63 AP (+24%):采用ESPCN的高效亚像素卷积,避免传统插值的信息损失。:从通道级(SE)到空间级(Spatial)的多粒度控制。:结合浅层细节和深层语义,恢复小目标的纹理信息。

u012133341的博客 842

leetcode path-sum-ii(Java)

leetcode题目 path-sum-ii -- newcoder 37 路径总和II -- leetcode 113 题目描述 Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum. For example: Given the below...

聚沙成塔 523

【AUTOSAR-DCM】-3.1-将CDD导入CFG并查看$22服务配置变化(UDS诊断DID带一个Data)

案例背景:(共8页精讲) 在《【UDS诊断描述文件CDD】-3.2-编辑CDD给$22服务创建一个带一个Data的DID(dataIdentifier)数据标识符》中,适应使用CANdela Studio在CDD中创建一个带一个Data的DID(dataIdentifier)数据标识符,见图0-1。现在我们将该CDD文件导入到CFG(DaVinci Configurator),看看配置会发生哪些变化。 图0-1 目录 1 将诊断描述文件CDD导入CFG(DaVinci Configurator.

「汽车电子助手」的博客 1634

java sum3算法_LeetCode算法题-Path Sum III(Java实现)

这是悦乐书的第227次更新01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第94题(顺位题号是437)。您将获得一个二叉树,其中每个节点都包含一个整数值。找到与给定值相加的路径数。路径不需要在根或叶子处开始或结束,但必须向下(仅从父节点行进到子节点)。树的节点数不超过1,000个,值范围为-1,000,000到1,000,000。例如:root = [10,5,-3,3,2,nu...

weixin_35044945的博客 226

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LeetCode算法题-Path Sum III(Java实现)

这是悦乐书的第227次更新 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第94题(顺位题号是437)。您将获得一个二叉树,其中每个节点都包含一个整数值。找到与给定值相加的路径数。路径不需要在根或叶子处开始或结束,但必须向下(仅从父节点行进到子节点)。树的节点数不超过1,000个,值范围为-1,000,000到1,000,000。例如: root = [10,5,-3,3,...

小川的博客 207

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LeetCode Path Sum

LeetCode 113 Path Sum II题意: 给定一棵二叉树和一个和,判断从树的根结点到叶子结点的所有结点的和是否等于给定的和,如果等于就记录这条路径。 解题思路:   对树进行遍历,并且使用回溯法进行求解。/** * Definition for a binary tree node. * public class TreeNode { * int val; *

Ruixin1993的博客 570

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Minimum Path Sum -- LeetCode

Minimum Path Sum -- LeetCode

weixin_43418664的博客 201

leetcode解题之112 & 113 & 437. Path Sum java版(二叉树路径和)

112. Path Sum ,113. Path Sum II,437. Path Sum III, leetcode解题之112 & 113 & 437. Path Sum java版(二叉树路径和)

mine_song的博客 1114

LeetCode 64 — Minimum Path Sum(C++ Java Python)

题目:http://oj.leetcode.com/problems/minimum-path-sum/ Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its

龙之梦 3540

[Leetcode] Path Sum I,II,III

112. Path Sum I: 点击打开链接 /** * Definition for a binary tree node. //判断是否有这样的路径满足和为sum * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(i

offerkkl的博客 435

leetcode path-sum(Java)

leetcode题目 path-sum -- newcoder 38 路径总和 -- leetcode 112 题目描述 Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the...

聚沙成塔 401

LeetCode Path Sum II

Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given sum.For example:Given the below binary tree and sum = 22, 5 / \

Coding for Dreams 2356

112. Path Sum

文章目录112. Path SumDescriptionSolutionsSubmissionsSummary 112. Path Sum https://leetcode.com/problems/path-sum/ Description Given a binary tree and a sum, determine if the tree has a root-to-leaf path s...

La La Land 138

如何一条命令把 REA 接入 AI Agent?setup 命令完整指南

REA(Reverse Engineer Anything)是一套面向 AI Agent 的逆向工程工具集,目标是从应用行为一路分析到原生二进制。本文的主角是它的 `setup` 命令——把 REA 的本地 MCP 服务接入 Claude Code、Cursor、Codex、VS Code 等主流 Agent 的唯一引导式入口。这个命令最特别的地方在于它的节奏:**先给你看完整的变更清单,你点头后

gitblog_01025的博客 400

64. Minimum Path Sum

64. Minimum Path Sum 1. 题目描述 题目链接 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path. Note: You can o...

凌凌小博客 321

LeetCode64 Minimum Path Sum

Minimum Path Sum问题描述 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path. Note: You can only move

yanqinghe123的专栏 301
上一篇: LeetCode算法题-Minimum Depth of Binary Tree(Java实现)
下一篇: LeetCode算法题-Pascal's Triangle(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值