【LeetCode:124. 二叉树中的最大路径和 + 二叉树+递归】

【leetcode】124 二叉树中的最大路径和(二叉树,递归) 题目链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 题目描述 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出... 阅读详情

在这里插入图片描述

🚀 算法题 🚀

🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀
🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨
🌲 作者简介:硕风和炜,优快云-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题|面经八股文|经验分享|好用的网站工具分享💎💎💎
🌲 恭喜你发现一枚宝藏博主,赶快收入囊中吧🌻
🌲 人生如棋,我愿为卒,行动虽慢,可谁曾见我后退一步?🎯🎯

🚀 算法题 🚀

在这里插入图片描述
在这里插入图片描述

🚩 题目链接

⛲ 题目描述

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和 。

示例 1:
在这里插入图片描述

输入:root = [1,2,3]
输出:6
解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6

示例 2:
在这里插入图片描述

输入:root = [-10,9,20,null,null,15,7]
输出:42
解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

树中节点数目范围是 [1, 3 * 104]
-1000 <= Node.val <= 1000

🌟 求解思路&实现代码&运行结果


⚡ 二叉树+递归

🥦 求解思路
  1. 设计一个递归函数,用来获取二叉树的最大路径和,同时,用一个max来与每次左右子树递归的最大数值+当前根节点的数值比较,更新最大值。
  2. 每次递归返回节点的最大贡献值,可能是左子树+当前节点,也可能是右子树+当前节点,或者就是当前节点,最后不要忘了与0比较,只有大于0,才会取相应的节点。
  3. 有了基本的思路,接下来我们就来通过代码来实现一下递归的解法。
🥦 实现代码
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 * int val;
 * TreeNode left;
 * TreeNode right;
 * TreeNode() {}
 * TreeNode(int val) { this.val = val; }
 * TreeNode(int val, TreeNode left, TreeNode right) {
 * this.val = val;
 * this.left = left;
 * this.right = right;
 * }
 * }
 */
class Solution {

    private int max = Integer.MIN_VALUE;

    public int maxPathSum(TreeNode root) {
        process(root);
        return max;
    }

    public int process(TreeNode root) {
        if (root == null)
            return 0;
        int leftSum = process(root.left);
        int rightSum = process(root.right);
        max = Math.max(max, leftSum + rightSum + root.val);
        return Math.max((Math.max(leftSum, rightSum) + root.val), Math.max(root.val, 0));
    }
}
🥦 运行结果

在这里插入图片描述


💬 共勉

最后,我想和大家分享一句一直激励我的座右铭,希望可以与大家共勉!

在这里插入图片描述

在这里插入图片描述

LeetCode 124:二叉树中的最大路径和(详细图解+递归) 摘要:本文探讨了二叉树中的最大路径和问题,要求找出任意节点序列(不重复)的最大值。采用后序遍历方法,自底向上计算每个节点的最大贡献值,同时更新全局最大值。关键点在于处理路径"拐弯"情况(同时利用左右子树)和舍弃负贡献子树。通过递归函数maxGain计算单边最大贡献,并在遍历过程中维护全局最大路径和。算法时间复杂度O(n),空间复杂度O(h)。该解法适用于类似树形动态规划问题,核心思路是分解问题并利用递归计算结果。 阅读详情

相关推荐

Vivado FFT IP核配置与实战:FPGA信号处理硬件加速指南

快速傅里叶变换(FFT)是数字信号处理(DSP)中的核心算法,用于将时域信号转换到频域进行分析。其原理基于离散傅里叶变换(DFT),通过蝶形运算的分解与复用,大幅降低了计算复杂度。在工程实践中,软件实现的FFT难以满足高速实时处理的需求,因此硬件加速方案至关重要。FPGA凭借其并行架构和可定制性,成为实现高性能FFT的理想平台。通过集成专用的FFT IP核,如Vivado中的Pipelined Streaming I/O架构,可以构建流水线化的计算引擎,实现极低延迟和高吞吐量的连续数据流处理。这种硬件方案特

weixin_42536863的博客 646

[LeetCode]124. 二叉树中的最大路径和(java实现)递归

[LeetCode]124 (java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(): 3. 解法 ---------------------------------------------------解法---------------------------------------------------: 可能存在的问题: 4. 可能有帮助的前置习题 5. 所用到

cloud的博客 1518

Neo4j Desktop新手必看:3分钟搞定CSV数据导入(附常见报错解决方案)

本文详细介绍了在Neo4j Desktop中高效导入CSV数据的三种主流方法,包括图形化界面操作、命令行批量导入和Python驱动编程导入,并提供了常见报错解决方案和性能优化技巧,帮助新手快速构建知识图谱。

lambda的博客 647

LeetCode 124. 二叉树中的最大路径和 递归 + 深度优先搜索 (DFS)详解

通过递归和 DFS 算法,我们可以有效地求解二叉树中的最大路径和问题。此方法思路清晰,易于实现,且具有较高的效率。

Lentr0py的博客 518

基于STM32与毫米波雷达的非接触式睡眠监测系统

物联网和嵌入式系统技术正在推动医疗健康设备的智能化发展。通过传感器网络采集生理信号,结合信号处理算法实现健康监测已成为主流技术方案。毫米波雷达凭借其非接触检测特性,在呼吸、心率等生命体征监测中展现出独特优势。STM32系列MCU凭借丰富外设和低功耗特性,成为医疗级嵌入式设备的首选平台。本系统整合60GHz毫米波雷达、红外测温与无线传输模块,构建了完整的睡眠质量评估解决方案,其硬件架构设计、信号处理算法和低功耗优化策略对可穿戴医疗设备开发具有参考价值。

weixin_36369848的博客 611

PythonWeb开发框架—Django之工程创建和models的定义和增删改查

文章介绍了Django工程的创建、models的定义和增删改查

weixin_42476668的博客 989

力扣124. 二叉树中的最大路径和(递归+类似DP)

力扣124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7 输出: 42 分析 这道题应该从叶子节点往上看,既然

soldersun的博客 320

【AI智能体】Dify 基于知识库搭建智能客服问答应用详解

Dify 基于知识库搭建智能客服问答应用详解

congge 6928

LeetCode经典算法面试题 #124:二叉树中的最大路径和(递归、动态规划等五种实现方案详细解析)

本文探讨了二叉树中的最大路径和问题。该问题要求找到任意节点序列组成的路径,使得节点值之和最大。关键分析包括:路径可能位于任意子树,需考虑负值节点影响,以及采用后序遍历自底向上计算。标准解法使用递归后序遍历,计算每个节点的最大贡献值并更新全局最大值,时间复杂度O(n)。还介绍了迭代法和带路径记录的变体,分别解决递归深度限制和路径追踪需求。核心思想是:对于每个节点,计算其作为路径拐点的和值,并选择性地合并左右子树的贡献。

夏日清风 1787

互联网人提高效率必备软件合集

很多的时候我们解决不了问题,只是因为没有找到对的工具,实际上,很多好的工具就在那里,只是你不用而已。这点上,信息壁垒是一个很大的原因,因此我希望兄伙伴们多出去走走,不要只是局限在一个圈层;

zhonglunshun的专栏 3483

基于STM32、HAL库的RN8209D电能计量芯片驱动程序设计

/ 假设电压互感器变比为220V:0.5V,电流互感器变比为20A:5mA。// 电压ADC原始值。// 电流ADC原始值。// 有功功率(W)// 电能(kWh)

corlin6688的博客 469

【算法入门】LeetCode 124. 二叉树中的最大路径和(Binary Tree Maximum Path Sum)详细解题指南|递归详解(Java & JavaScript)|递归深度优先搜索入

给你一棵二叉树,找出路径和最大的路径,路径可以从任何节点开始,也可以到任何节点结束,路径必须是一条连续节点序列,且路径中每对相邻节点之间存在一条边。路径需要至少包含一个节点。示例 1:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6示例 2:输入:root = [-10,9,20,null,null,15,7]输出:42解释:最优路径是 15 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42。

南北极之间 1176

AI在生物学领域的应用:基因序列分析和人工智能生物学

好的,非常感谢您提供的这个精彩的主题和详细的要求。我会全力以赴,遵循您的要求写一篇内容丰富、结构清晰、论述深入的专业技术文章。现在,就让我们开始这篇关于"AI在生物学领域的应用:基因序列分析和人工智能生物学"的博客文章吧! 1. 背景介绍 1.1 生物信息学的兴起

AI天才研究院 1411

递归-LeetCode124-二叉树中的最大路径和

题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 ...

qq_36025975的博客 323

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LeetCode·124.二叉树中的最大路径和·递归

递归

m0_64560763的博客 304

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

python-leetcode-二叉树中的最大路径和

【代码】python-leetcode-二叉树中的最大路径和。

Lucy_wzw的博客 355

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

简洁易懂递归 | 力扣124.二叉树中的最大路径和

简洁易懂的递归实现,时间复杂度O(n),空间复杂度O(1)。

weixin_63800030的博客 450

leetcode: 124.二叉树中的最大路径和(后序遍历,递归)

链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 这道题使用递归来做。在递归函数中,求出以当前root节点为根的子树的最大路径和,但注意返回时不能简单返回这个最大值,而要返回只经过root的左或右子树的最大路径和,这样这个值传到上一级后才可以做进一步处理(否则不再能成为“路径”)。 java代码: class Sol...

Gomamon的博客 275

LeetCode 124. 二叉树中的最大路径和(C++)递归

递归思想: 首先,考虑实现一个简化的函数 maxGain(node),该函数计算二叉树中的一个节点的最大贡献值,具体而言,就是在以该节点为根节点的子树中寻找以该节点为起点的一条路径,使得该路径上的节点值之和最大。 具体而言,该函数的计算如下。 空节点的最大贡献值等于 0。 非空节点的最大贡献值等于节点值与其子节点中的最大贡献值之和(对于叶节点而言,最大贡献值等于节点值)。 例如,考虑如下二叉树。 class Solution { private: int maxSum = IN...

伍粟的博客 527

【递归】leetcode124.二叉树中的最大路径和

题目: 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 解答: # Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None):

jqq125的博客 129

LeetCode 124. 二叉树中的最大路径和(递归)

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 思路: 递归的时候记录从这个点往下得到路径的最大权值和;那么遍历每一个点,找到其左右叶子向下遍历能得到的最大路径和,加上该点点权,得到的就是包含子树经过中经过该点的最大路径和。 需要注意的一点是点权可能是负的。 class Solution {

tomjobs的博客 510

[LeetCode 困难 递归]124. 二叉树中的最大路径和

题目描述 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回其 最大路径和 。 示例 1: 输入:root = [1,2,3] 输出:6 解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6 示例 2: 输入:root = [-10,9,20,null,null,15,7] 输出:42 解释:最优路径是 15 -&g

weixin_50088096的博客 95

LeetCode 124. 二叉树中的最大路径和 (树形DP、递归实现)

二叉树中的最大路径和 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int ans = INT_MIN;

SongyangJi 341

LeetCode 124. 二叉树中的最大路径和 (递归)

思路 代码实现 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode r.

Amxrjgcs的博客 320

Leetcode 124 二叉树中的最大路径和 (递归)

给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 示例 1: 输入: [1,2,3] 1 / \ 2 3 输出: 6 示例 2: 输入: [-10,9,20,null,null,15,7]   -10    / \   9  20   ...

zamaochick的博客 281

【二叉树】【递归】Leetcode.124. 二叉树中的最大路径和

class Solution { public: int max_path_ = INT_MIN; int maxPathSum(TreeNode* root) { path(root); return max_path_; } int path(TreeNode *root) { if(root == nullptr) return 0; int left = max(path(root->left)..

GoingJack博客 149
上一篇: 【LeetCode:204. 计数质数 + 埃氏筛】
下一篇: 【LeetCode:108. 将有序数组转换为二叉搜索树 + 二叉树+递归】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

硕风和炜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值