二叉树----15.二叉树中的最大路径和

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

题目链接

/**

            找到和最大的连续路径; 遍历顺序的选择? 后序遍历,回溯自底向上不断筛选最佳路径。

            执行流程:

                    首先按后序遍历的顺序递归至最底层,准备开始回溯。

                    若当前节点,接收到的返回值全为0,说明已递归至最底层,返回自己的值更新最大值                            即可。

                    若当前节点,接收到的返回值其中一个<=0,说明其只有一个子树,或另一个子树值之                            和<0废弃,当前节点与>0的返回值叠加,更新最大和向上返回即可。

                    若当前节点,接收到的返回值均>0,则说明左右子树的值均有效,则全部叠加更新最大                          值,再各自与当前节点相加,返回更大的那一个(有效根节点的筛选)。

                    若当前节点,接收到的值全部<=0, 则说明左右子树值均需废弃,返回自己的值更新最                          大值即可,可与第一种情况合并

                    回溯完成返回最大值即可

            优化:

                计算子树的返回值 若返回值为负直接修改为0 避免复杂的分支,可统一计算

*/

/**
 * 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 {
    //将res初始化为最小的负数,避免节点中出现负数导致错误的结果
    private int res = Integer.MIN_VALUE;

    public int maxPathSum(TreeNode root) {
        /**
            找到和最大的连续路径; 遍历顺序的选择? 后序遍历,回溯自底向上不断筛选最佳路径。
            执行流程:
                    首先按后序遍历的顺序递归至最底层,准备开始回溯。
                    若当前节点,接收到的返回值全为0,说明已递归至最底层,返回自己的值更新最大值即可。
                    若当前节点,接收到的返回值其中一个<=0,说明其只有一个子树,或另一个子树值之和<0废弃,当前节点与>0的返回值叠加,更新最大和向上返回即可。
                    若当前节点,接收到的返回值均>0,则说明左右子树的值均有效,则全部叠加更新最大值,再各自与当前节点相加,返回更大的那一个(有效根节点的筛选)。
                    若当前节点,接收到的值全部<=0, 则说明左右子树值均需废弃,返回自己的值更新最大值即可,可与第一种情况合并
                    回溯完成返回最大值即可

            优化:
                计算子树的返回值 若返回值为负直接修改为0 避免复杂的分支,可统一计算
        */
       Sum(root);
       return res;
    }

    private int Sum(TreeNode root) {
        if(root == null) {
            return 0;
        }

        //后序遍历  首先按后序遍历的顺序递归至最底层 剔除为负的情况,避免复杂分支
        int left = Math.max(Sum(root.left), 0);
        int right = Math.max(Sum(root.right), 0);

        //开始回溯
        //将当前节点值与左右子树叠加 若大于res 则当前节点暂时为有效根节点
        int nowSum = root.val + left + right;
        res = Math.max(res, nowSum); 
        

        //只返回较大的分支,当前根节点有可能被取代。
        return root.val + Math.max(left, right);
    }
}

DID实战指南:从平行趋势检验到PSM-DID的Stata全流程解析 本文详细解析了双重差分法(DID)在政策评估中的应用,从平行趋势检验到PSM-DID的Stata全流程操作。通过实例演示和代码示例,帮助研究者掌握DID方法的核心逻辑、前提条件验证及稳健性检验技巧,提升因果推断研究的准确性。 阅读详情

相关推荐

Unreal Engine鸿蒙移植实战:环境配置、构建流程与性能优化指南

游戏引擎移植是跨平台开发中的关键技术环节,其核心原理在于通过适配目标操作系统的底层接口和工具链,实现同一套代码在不同硬件和软件环境下的高效运行。这项技术的价值在于最大化代码复用率,降低多平台维护成本,并能让应用快速触达新兴生态系统的用户。在移动游戏和XR应用领域,随着鸿蒙HarmonyOS生态的快速发展,将成熟的商业引擎如Unreal Engine迁移至此平台,成为开发者探索新市场机会的重要路径。本文聚焦于Unreal Engine项目向鸿蒙系统的移植实践,详细解析了从环境搭建、源码适配到构建打包的全链路流

weixin_29011395的博客 411

(15)124. 二叉树中的最大路径和

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

li_qw_er的博客 160

WAVE格式

一.wave格式概述 Wave文件格式是用于多媒体文件存储的Microsoft RIFF(Resource Interchange FileFormat)的一个子集。每一个RIFF文件以一个文件头开始,后面是一系列数据块。Wave文件通常是包含“WAVE”块的RIFF文件。而该“WAVE”块由两个子块组成,称为“fmt”块。“fmt”块用于确定数据格式,并且“data”块包含实际的样本数据,

yejia1280的博客 4390

2021-11-15 LeetCode 124. 二叉树中的最大路径和

题目描述 解题思路:后序遍历,先计算左右子树各自的最大值,进而得到该节点的最大值,与全局变量max做比较,并保存,返回该节点到叶子节点的最大值(亮点)。 解题代码: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int va

weixin_44472627的博客 125

栅格数据做相关性分析前的预处理(批量定义投影、栅格投影、重采样)

最近在做两个栅格数据的相关性分析,这个最主要的是两个栅格数的行列号是一致的(也就是说坐标系、分辨率一致),那么标准的栅格数据的分辨率是以米的形式存在的,但是有一些栅格数据是以度为单位存在的,所以在做分析前,一定要先把其转换为米,否则在重采样的时候就会出错。(相关文章——栅格数据以度为单位变为以米为单位的简单做法)当然,在变其分辨率的单位前,一定要将其坐标系转换为一致。所以就有以下的步骤(如何将两个栅格数据的坐标系、分辨率的单位和分辨率一致) 1.首先,要看两个栅格数据的坐标系是否一致,如果不一致,要先统一到

qq_41828818的博客 8351

基于STM32的智能婴儿床设计(蓝牙通信+摄像头监控)_315

本项目设计并实现了一款基于STM32微控制器的智能婴儿床系统,通过多种传感器和智能控制模块为家长提供更便捷和高效的婴儿照护解决方案。系统包括婴儿哭泣检测、湿度监测、空气质量检测、温度监控等多项功能,并通过蓝牙与手机APP进行数据传输和远程控制。婴儿床内置摇摇床和安抚音乐播放功能,能够在婴儿哭泣时自动启动摇摇床并播放安抚音乐。此外,系统还支持摄像头远程监控,让家长实时查看婴儿的状态。整个系统采用STM32F103RCT6作为核心控制单元,结合声音传感器、湿度传感器、MQ135空气质量传感器。

865

48Days-Day15 | 游游的重组偶数,体操队形,二叉树中的最大路径和

模拟,这里我的思路是,一个位上是偶数的情况就只有{0, 2, 4, 6, 8},所有先把它们放进一个set里面,如果那个数里面有一位包含在set里面,就把这一位和最后一位交换一下,就是偶数了,但是为了。的情况,我们应该先判断原数是不是偶数,如果是可以不用进行后面的操作。,这里我取得-1010,因为值的范围为[-1000, 1000]图为输入示例的决策树简示,大家可以根据图来理解一下剪枝的意思。dfs,,递归每一位放的数,这里我只提一下剪枝策略,如果。由于这道题的结果有可能为负数,所以。

各种关于Java的内容~~ 379

magic-api的鉴权机制配置 (附实战代码)

引入magic-api及相关数据库驱动依赖 配置yml文件和编辑器JS文件 实现登录鉴权逻辑,包括用户验证和Token处理 接口鉴权拦截器设计,确保接口访问安全性 文章提供了完整的代码示例,帮助开发者快速集成magic-api框架并实现权限控制功能。

码农研究僧的博客 228

力扣刷题Day 15:二叉树中的最大路径和(124)

自顶向下递归到叶子结点,然后记录每个结点的max(本身的值、自身值与左孩子值之和、自身值与右孩子值之和)、以及自身与左右两个孩子值之和,回溯的过程就是查找最大和的过程。

qq_52643100的博客 251

WorkBuddy KiCad 实战:国产 AI 搭子不只会写代码,传感器板从零走到可审查

真正可用的 PCB 教程不能承诺“一键打样”。本课把 WorkBuddy 放在需求拆分、文件生成和审查记录的位置,KiCad 负责 ERC、DRC 与制造文件,工程师负责最终判断。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、KiCad 8.0、Python 3.11 与人工审阅组成一条可复现链路。你会从“已确认的接口表、器件库来源、板框与电源方案”出发,得到“KiCad 工程、原理图、初始 BOM、ERC 报告与审查记录”,并学会用真实命令、错误信号和停止条件判断成果能不能进入下一阶

yueyeguzhuo的专栏 227

13、混合系统的离散与连续交互

本文详细探讨了混合系统中离散事件与连续动态的交互机制,涵盖了建模方法、分析技术、设计挑战以及多种控制策略。通过具体案例研究和操作语义的定义,展示了混合系统在制造业、交通系统、机器人技术和过程控制等领域的广泛应用。文章还介绍了实验仿真、稳定性研究及优化方法,旨在帮助读者全面理解混合系统的设计与控制要点,并为未来智能化和自适应混合系统的发展提供了展望。

5f4d3s2a1q的博客 128

LeetCode第124题—二叉树中的最大路径和—Python实现

title: LeetCode No.124 categories: OJ LeetCode tags: Programing LeetCode OJ LeetCode第124题—二叉树中的最大路径和 自己代码的开源仓库:click here 欢迎Star和Fork ???? 题目描述 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你

StriveZs'Blog 631

【云原生系列】第一讲:什么是云计算

云计算(cloud computing):分布式:分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,合并&反馈:通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期:分布式计算:简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过分布式计算,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段:计算:分布式计算、效用计算、负载均衡、并行计算、存储。

颜淡慕潇 1万+

力扣Hot100每日N题(15~28)

【代码】力扣Hot100每日N题(15~28)

ZVAF_的博客 281

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

leetcode-hot100-二叉树

leetcode-hot100-二叉树

XSYaaaaan的博客 333

数学建模模型总结

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

hot100 二叉树专题

hot100二叉树专题

I_CLK的博客 951

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【LeetCode】第124题:二叉树的最大路径和

LeetCode 链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/ 本题可以对比左神算法中的:二叉树中的最远距离,只不过最远距离中没有考虑权重的问题,本题需要考虑每个节点的权重问题,还是有所区别的。 题目:给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该...

Java学习 1403

【LeetCode】二叉树中的最大路径和

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

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1557

124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。

踏入代码与智能交织的奇妙世界,我是小辉同志。在这片技术天地里,C++ 是我探索底层逻辑、雕琢高效算法的利刃,每一段精心编写的代码都是通往优化之路的基石。而人工智能,则宛如闪耀星辰,引领我不断钻研机器学习、深度学习等前沿领域,探寻智能的奥秘。 1003

二叉树中的最大路径和

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

看,未来的博客 2701

LeetCode第124题_二叉树中的最大路径和

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点root,返回其 最大路径和。

qq_40263592的博客 2040

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

我们定义一个递归函数 max_gain(node) 来计算节点的最大贡献值。这个函数计算从当前节点出发,延伸到左右子树所能获得的最大路径和。计算当前节点的最大贡献值如果当前节点为空,返回0。计算左子树的最大贡献值,记为 left_gain。如果 left_gain 是负值,设置为0,因为负值不会增加路径和。计算右子树的最大贡献值,记为 right_gain。如果 right_gain 是负值,设置为0,因为负值不会增加路径和。

liulanba的博客 1821

LeetCode二叉树中的最大路径和

124. 二叉树中的最大路径和 路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中至多出现一次。该路径至少包含一个节点,且不一定经过根节点。 路径和是路径中各节点值的总和。 给你一个二叉树的根节点root,返回其最大路径和。 示例 1: 输入:root = [1,2,3] 输出:6 解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6 示例 2: 输入:root = [...

TranSad的博客 4002

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

Leetcode.124: 二叉树中的最大路径和题目描述解题过程代码展示 题目描述 路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中至多出现以此,该路径至少包含一个节点,且不一定经过根节点。 路径和是路径中各节点值得总和。 给你一个二叉树的根结点root,返回其最大路径和。 示例1: 输入:root = [1, 2, 3] 输出:6 解释:最优路径是2->1->3,路径和为2+1+3=6 示例2 输入:root = [-10,9,20

小哲的博客 3097

LeetCode 二叉树中的最大路径和

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

hestyle的博客 2035
上一篇: Redis----缓存设计、旁路缓存优化
下一篇: 场景题----数据去重
码破苍穹ovo
博客等级 码龄2年 377粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值