当前位置: 首页 > news >正文

【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 -> 20 -> 7 ,路径和为 15 + 20 + 7 = 42

提示:

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

解答

源代码

/*** 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 maxSum = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {maxGain(root);return maxSum;}public int maxGain(TreeNode root) {if(root == null) {return 0;}int left = Math.max(maxGain(root.left), 0);int right = Math.max(maxGain(root.right), 0);maxSum = Math.max(maxSum, root.val + left + right);return root.val + Math.max(left, right);}
}

总结

这道题计算的二叉树的最大路径和对应的路径不一定经过根节点,所以递归函数计算的并不是最大根节点,而是当前节点的“最大贡献值”,也就是以这个节点为头的路径的最大路径和。

http://www.lryc.cn/news/102040.html

相关文章:

  • Linux命令总结
  • SpringBoot临时属性设置
  • 【Python小知识】如何解决代理IP在多线程环境下的并发问题?
  • redis常见面试汇总
  • 子数组的解释与专题
  • PHP: 开发入门macOS系统下的安装和配置
  • 在CentOS下安装docker
  • [JavaWeb]SQL介绍-DQL查询数据
  • [containerd] 在Windows上使用IDEA远程调试containerd, ctr, containerd-shim
  • Verilog语法学习——LV4_移位运算与乘法
  • 打卡力扣题目九
  • Python零基础入门(九)——函数,类和对象
  • 在linux上面部署activemq
  • mysql的sql语句优化方法面试题总结
  • 小程序 获取用户头像、昵称、手机号的组件封装(最新版)
  • 【Linux】简易shell外壳的制作
  • TenserRT(四)在 PYTORCH 中支持更多 ONNX 算子
  • 前端高级面试题-浏览器
  • Mongodb 多文档聚合操作处理方法三(聚合管道)
  • Zabbix分布式监控配置和使用
  • XCTF_very_easy_sql
  • [React]useMemoizedFn和useCallback对比
  • 计算机毕设 深度学习人体跌倒检测 -yolo 机器视觉 opencv python
  • 完全背包
  • 【软件测试】webdriver常用API演示(Java+IDEA+chrome浏览器)
  • Linux安装MySQL 8.1.0
  • 多线程面试相关的一些问题
  • 【使用维纳滤波进行信号分离】基于维纳-霍普夫方程的信号分离或去噪维纳滤波器估计(Matlab代码实现)
  • Vue+axios如何解决跨域
  • 网络安全系统中的守护者:如何借助威胁情报 (TI) 提高安全性