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

[HOT 100] 0124. 二叉树中的最大路径和

文章目录

      • 1. 题目链接
      • 2. 题目描述
      • 3. 题目示例
      • 4. 解题思路
      • 5. 题解代码
      • 6. 复杂度分析

1. 题目链接


124. 二叉树中的最大路径和 - 力扣(LeetCode)

2. 题目描述


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

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

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

3. 题目示例


示例 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

4. 解题思路


  1. 问题理解
    • 需要找到二叉树中任意节点到任意节点的路径,使路径上节点和最大
    • 路径至少包含一个节点
    • 路径可以不经过根节点
  2. 关键思路
    • 后序遍历计算每个节点的最大贡献值
    • 对于每个节点,计算其作为路径最高点时的路径和
    • 维护全局最大值
  3. 递归设计
    • 基本情况:空节点贡献值为0
    • 递归计算左右子树贡献值(负值则舍弃)
    • 更新全局最大值(当前节点作为转折点的路径和)
    • 返回当前子树的最大贡献值
  4. 贡献值与路径和
    • 节点贡献值:该节点到其子树中某节点的最大路径和
    • 全局最大路径和:所有可能路径中的最大值

5. 题解代码


class Solution {private int ans = Integer.MIN_VALUE; // 存储最终结果(最大路径和)public int maxPathSum(TreeNode root) {dfs(root); // 从根节点开始深度优先搜索return ans; // 返回最大路径和}private int dfs(TreeNode node) {if (node == null) {return 0; // 空节点贡献值为0}// 递归计算左子树的最大贡献值(如果为负则不计入)int lVal = Math.max(dfs(node.left), 0);// 递归计算右子树的最大贡献值(如果为负则不计入)int rVal = Math.max(dfs(node.right), 0);// 更新全局最大值(当前节点作为路径最高点的路径和)ans = Math.max(ans, lVal + rVal + node.val);// 返回当前子树的最大贡献值(只能选择左右子树中的一个路径)return Math.max(lVal, rVal) + node.val;}
}

6. 复杂度分析


时间复杂度:O(n)

  • 每个节点只访问一次
  • n为树中节点数量

空间复杂度:O(h)

  • 递归调用栈深度
  • h为树的高度(最坏情况O(n),平衡树O(logn))

相关文章:

  • 从零开始讲DDR(8)——AXI 接口MIG 使用(1)
  • 滥用绑定变量导致Oracle实例宕机
  • nt!NtReplyWaitReceivePortEx函数分析之nt!LpcpMoveMessage拷贝csr_api_msg
  • NV162NV172美光固态颗粒NV175NV188
  • 010302-oss_反向代理_负载均衡-web扩展2-基础入门-网络安全
  • AI日报 · 2025年05月02日 | 再见GPT-4!OpenAI CEO 确认 GPT-4 已从 ChatGPT 界面正式移除
  • Linux——进程终止/等待/替换
  • # 前后端分离象棋对战项目开发记录
  • AE/PR插件 转场创建大师专业版 Transition Master Pro v2.0.2 Win+使用教程
  • 2025年- H21-Lc129-160. 相交链表(链表)---java版
  • Spring Boot 集成 Elasticsearch 的详细步骤
  • new的几种形式
  • Python 数据智能实战 (7):智能流失预警 - 融合文本反馈
  • 创意效率双提升,AIGC让增长更轻盈
  • Spring Boot中集成Guava Cache或者Caffeine
  • 第 1 篇:起点的选择:为何需要超越数组与链表?
  • 菲索旋转齿轮法:首次地面光速测量的科学魔术
  • 信息收集新利器:SSearch Chrome 插件来了
  • ROPE(旋转位置编码)简述
  • 当神经网络突破摩尔定律:探索大模型时代的算力新纪元
  • 广西科学调度保障春灌面积1373.53万亩
  • 消费持续升温,这个“五一”假期有何新亮点?
  • 全文丨中华人民共和国民营经济促进法
  • 经营业绩持续稳中向好,国铁集团2024年度和2025年一季度财务决算公布
  • 秦洪看盘|资金切换主线,重构市场风格
  • 神舟十九号载人飞船因东风着陆场气象原因推迟返回