力扣hot100 二叉树中的最大路径和 递归

news/2024/11/29 7:35:29/

Problem: 124. 二叉树中的最大路径和
在这里插入图片描述

文章目录

  • 解题方法
  • 复杂度
  • 💖 Code

解题方法

👨‍🏫 参考思路
在这里插入图片描述

复杂度

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( n ) O(n) O(n)

💖 Code

/*** 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 {int ans = -20000;//此处的最小值一定要小于数据范围的最小值 -10000public int maxPathSum(TreeNode root){cal(root);return ans;}/*** @param root 当前树的节点* @return 当前树的单侧最大路径长度*/private int cal(TreeNode root){if (root == null)// 访问到叶子节点,返回 0return 0;int l = cal(root.left);// 递归计算左右子树int r = cal(root.right);int max = l > r ? l : r;// 记录左臂右膀的长度int t = root.val;// t 记录的是以当前 root 为转折点的路径长度if (l > 0)// 负数则舍弃t += l;if (r > 0)t += r;int res = root.val;// res = 左右子树单侧路径较长者 + 当前root的值if (max > 0)// 同理,不要负值拖油瓶res += max;ans = Math.max(ans, t);// 更新全局答案return res;}
}

http://www.ppmy.cn/news/1324081.html

相关文章

关键信息基础设施安全相关材料汇总

文章目录 前言一、法律(1)《中华人民共和国国家安全法》(2)《中华人民共和国网络安全法》(3) 《中华人民共和国密码法》(4)《中华人民共和国数据安全法》(5) 《中华人民共和国个人信息保护法》二、行政法规(6)《中华人民共和国保守国家秘密法实施条例》(7) 《关键信息基础设施安…

排序算法9----计数排序(C)

计数排序是一种非比较排序,不比较大小 。 1、思想 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。 2、步骤 1、统计数据:统计每个数据出现了多少次。(建立一个count数组,范围从[MIN,MAX],MAX代表arr中…

.Net Core 使用 AspNetCoreRateLimit 实现限流

上一篇文章介绍过ASP.NET Core 的 Web Api 实现限流 中间件-CSDN博客 使用.NET 7 自带的中间件 Microsoft.AspNetCore.RateLimiting 可以实现简单的Api限流,但是这个.NET 7以后才集成的中间件,如果你使用的是早期版本的.NET,可以使用第三方库…

css-盒子等样式学习

盒子居中,继承外层盒子的宽高 兼容性(border-box)将边框收到盒子内部 初始化div 不用管box-setting content-box 还原 创建为一个类 ,让所有需要还原的类 进行继承 padding 用法表示margin上下左右边距 body 外边距&…

【期末总复习】计算机视觉理论与实践

1、计算机视觉的三大任务 分类、检测(定位)、分割(语义和实例) 2、生成对抗网络的基本概念 生成对抗网络GAN是一种用于生成模型的机器学习框架。它由两个主要组件组成:生成网络和判别网络。生成网络试图生成与真实数…

外部配置文件和Class打包到jar 然后重新启动java -jar

我这边以bpvs-backend-2.0.0-SNAPSHOT.jar和application-dev.properties配置文件为例 一.将DeviceDataService.class和DeviceDataPushTOSEventListener.class替换到jar内部 步骤1:解压原始bpvs-backend-2.0.0-SNAPSHOT.jar 将两个class文件拷贝到jar目录下后cd到文…

使用java内置工具jar手动创建xxx.jar文件

平时我们一般都是在IDE工具中使用插件打包JAVA项目为 XXX.jar文件, 其实这个工作我们手动也可以完成, 也非常简单, 使用JDK自带的jar命令行工具即可. 用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ... jar用法示例 创建 jar: …

Linux消息队列

常用函数 //创建/获取消息队列 int msgget (key_t key, int msgflg); /* key : 为键值,ftok(); msgflg:IPC_CREAT - 创建,不存在即创建,已存在即获取,除非… IPC_EXCL - 排斥,已存在即失败。 */// 向消息队列发送消息 int msgs…