树-二叉树的最大路径和

news2024/11/19 16:26:43

一、问题描述

二、解题思路

因为各个节点的值可能为负数,初始化res(最大路径和)的值为最小整数:Integer.MIN_VALUE

我们这里使用深度遍历(递归)的方法,先看某一个子树的情况:

这里有一个技巧,如果左、右子树贡献的值小于0时,可以将这个值设置为0,等价于舍弃该子树。

此时最大值为:res=Math.max(res,rootVal+leftVal+rightVal)

这里的rootVal+leftVal+rightVal包含多种情况(在递归过程中在下面值内保持最大值,这里好好理解一下,很巧妙的感觉):

  • 只有左子树:根节点和右子树一起贡献负值
  • 左子树+根节点:此时右子树贡献负值:橘黄色箭头标识路径
  • 只有根节点:左右子树均贡献负值
  • 根节点+右子树:此时左子树贡献负值:蓝色箭头标识路径
  • 只有右子树:左子树和根节点一起贡献负值
  • 左子树+根节点+右子树贡献的值:红色箭头标识路径

三、代码实现

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    int res=Integer.MIN_VALUE;
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public int maxPathSum (TreeNode root) {
        if(root==null){
            return 0;
        }
        // 使用dfs记录路径和并返回res
        dfs(root);
        return res;
    }
    //从根节点深度遍历,
    public int dfs(TreeNode root){
        if(root==null){
            return 0;
        }
        int leftchildVal=Math.max(dfs(root.left),0);
        int rightchildVal=Math.max(dfs(root.right),0);
        
        int maxval=leftchildVal>rightchildVal?leftchildVal:rightchildVal;
        res=Math.max(res,root.val+leftchildVal+rightchildVal);
        return root.val+maxval;
        
    }
}

四、刷题链接

二叉树中的最大路径和_牛客题霸_牛客网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1811544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C#】pdf按页分割文件,以及分页合并,效果还不错,你值得拥有

欢迎来到《小5讲堂》 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 背景效果单页分割文件合并多页分割插件说明相关文章 背景 最近遇到一…

STM32Cube系列教程11:STM32 AES加解密模块性能测试

文章目录 本次测试环境本次测试所使用的系统时钟为48MHz本次测试主要测试对大量数据进行加解密所需的时间,本次为不严谨测试,忽略了程序调用耗时,结果仅供参考。 AES算法与数据加解密加密与解密对称加解密AES算法AES-ECBAES-CBC 填充算法PKCS…

ITIL简介重要组成部分

ITIL简介&重要组成部分 ITIL(Information Technology Infrastructure Library)是一个IT服务管理的最佳实践框架,通过服务战略、服务设计、服务过渡、服务运营和持续服务改进五个核心模块,帮助组织优化IT服务流程,…

嘴尚绝卤味:健康美味,引领卤味新风尚

在快节奏的现代生活中,人们对于美食的追求从未停歇。卤味作为中国传统美食的代表之一,以其独特的口感和丰富的营养,深受广大消费者的喜爱。而在众多卤味品牌中,嘴尚绝卤味凭借其健康、美味的特色,成为了市场上的佼佼者…

Pytorch解决 多元回归 问题的算法

Pytorch解决 多元回归 问题的算法 回归是一种基本的统计建模技术,用于建立因变量与一个或多个自变量之间的关系。 我们将使用 PyTorch(一种流行的深度学习框架)来开发和训练线性回归模型。 二元回归的简单示例 训练数据集(可获取&…

分离式光电液位传感器有哪些特点?

分离式光电液位传感器是一种先进的液位检测技术,在科学技术的不断推进下得到了广泛应用。相比传统的液位传感器,分离式光电液位传感器具有许多独特的特点。 传感器采用了先进的光学技术,将传感器装在需要检测液位的位置,并采用了…

非GIS专业,真的不适合WebGIS开发吗?

到底是哪些人在新中地特训营学GIS开发? 很多同学对GIS开发的认知还停留在GIS专业的学生才能学GIS开发,然而,在新中地教育,非GIS专业的学生几乎占一半。 除了GIS专业,还有测绘、遥感等跟GIS差别不大的专业学生选择来学…

面试官:你讲下接口防重放如何处理?

前言 我们的API接口都是提供给第三方服务/客户端调用,所有请求地址以及请求参数都是暴露给用户的。 我们每次请求一个HTTP请求,用户都可以通过F12,或者抓包工具fd看到请求的URL链接,然后copy出来。这样是非常不安全的,有人可能会…

鸿蒙轻内核A核源码分析系列二 数据结构-位图操作

在进一步分析之前,本文我们先来熟悉下OpenHarmony鸿蒙轻内核提供的位操作模块,在互斥锁等模块对位操作有使用。位操作是指对二进制数的bit位进行操作。程序可以设置某一变量为状态字,状态字中的每一bit位(标志位)可以具…

Kubernetes——HPA自动伸缩机制

目录 前言 一、概念 1.定义 2.核心概念 3.工作原理 4.HPA的配置关键参数 5.关键组件 5.1HPA控制器(HPA Controller) 5.2Metrics Server 5.3自定义指标适配器(Custom Metrics Adapter) 5.4Deployment/ReplicaSet 5.5Po…

文件二维码能快速生成吗?多种类型文件生成二维码的方法

现在将文件做成二维码是一种很常用形式,通过二维码来存储多个文件,在手机上扫码查看内容,对于文件的安全性和用户体验都有很好的提升。用户无需下载文件,扫码就可以快速在线阅读或者下载文件内容,有利于文件的快速分享…

2024年智能制造行业CRM研究(附需求清单、市场格局、选型建议)

在国家大力鼓励智能制造行业与数字化转型这个大背景下,我们选择了2024年智能制造行业数字化的几个关键趋势做深入解读,并对智能制造行业核心的数字化系统CRM进行了全面评估与排名。本文不仅提供了详尽的需求清单,帮助企业明确自身对CRM系统的…

不定时更新 解决无法访问GitHub github.com 打不开 访问加速

1 修改hosts Windows 10为例,‪文件C:\Windows\System32\drivers\etc\hosts 管理员打开记事本来修改 文件-打开-“C:\Windows\System32\drivers\etc\hosts” 20.205.243.168 api.github.com 185.199.108.154 github.githubassets.com 185.199.108.133 raw.githubusercontent.…

1.ei论文会被scopus检索吗文被其检索吗?

ei论文会被scopus检索吗 scopus数据库能检索的专业范围是比较广泛的,涵盖了医学,地球环境科学,化学,数学,工程学,物理,生物科学等领域,也收录了很多会议论文,那么ei论文…

JwtAccessConverterJwtTokenStorejdbc建表结构

文章目录 JWT实现MacTestMacSigner Rsa生成jks证书需要先安装opensslkeytool生成jks (Java Key Store) 文件测试密钥 JwtTokenStoreInMemoryTokenStore&RedisTokenStore&JdbcTokenStore&JwtTokenStore图解JwtTokenStore详解 jdbc实现表结构说明1oauth_client_detai…

Win10系统自带输入法英文变大的问题

现在习惯使用Windows自带的五笔输入法了,但一直以来总会遇到输入时突然英文字母变大了,相隔空间也变大了的情况。 asdfghkl asdfghkl 后来知道这是输入法变…

如何在Linux虚拟机服务器上配置和部署Java项目?

在Linux虚拟机上配置和部署Java项目,通常涉及以下步骤: 1. 准备Linux虚拟机 选择合适的Linux发行版 :根据项目需求和个人熟悉程度,选择如Ubuntu LTS、CentOS Stream或Debian等发行版。 安装虚拟机软件 :在宿主机&#…

css图片适配,不随屏幕的大小变化

.carimg {width: 100%;height: 100%;max-width: 100%;max-height: 100%;object-fit: cover; } <img class"carimg" :src"item.imageUrl" alt"" /> 效果&#xff1a; 全屏时 屏幕变小时

985找工作都这么难了吗

经历如下 也不知道自己适合干啥 好想找份实习入门啊

无人机RTMP推流EasyDSS直播平台推流成功,不显示直播按钮是什么原因?

互联网视频云平台/视频点播直播/视频推拉流EasyDSS支持HTTP、HLS、RTMP等播出协议&#xff0c;并且兼容多终端&#xff0c;如Windows、Android、iOS、Mac等。为了便于用户集成与二次开发&#xff0c;我们也提供了API接口供用户调用和集成。在无人机场景上&#xff0c;可以通过E…