【 每天学习一点算法 2026/05/19】二叉树中的最大路径和

每天学习一点算法 2026/05/19

题目:二叉树中的最大路径和

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

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

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

我们以一个中间节点为例,它的所经过的路径只有三种情况:链接左侧子节点,链接右侧子节点,链接两边子节点。所以我们只需要递归获取每个节点这三种情况的最大值,然后再去除所有最大值中的最大值即可。

typescript 复制代码
function maxPathSum(root: TreeNode | null): number {
  let max = -Infinity // 因为节点值可能为负值,所有初始值设为负无穷
  // 辅助递归遍历函数
  function helper (root: TreeNode | null): number {
    if (root === null) return 0 // 遍历到叶子节点开始回归
    const left = Math.max(helper(root.left), 0) // 回归返回值小于0的情况不用参与选择
    const right = Math.max(helper(root.right), 0) // 回归返回值小于0的情况不用参与选择
    const all = root.val + left + right // 链接两侧路径和
    const one = Math.max(left, right) + root.val // 只选一侧最大路径和
    max = Math.max(all, one, max) // 计算并存储截至此节点最大路径和
    return one // 只有选一边才能继续计算,返回选一侧最大路径和到上一层
  }
  helper(root) // 初始传入根节点
  return max // 返回最大路径和
};

题目来源:力扣(LeetCode)

相关推荐
一木 之林2 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序
小陈phd2 小时前
深入理解agent学习笔记(六)——提示工程-优化系统提示词
笔记·学习
yi0113 小时前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
wuyk5553 小时前
27.LeetCode 2265. 统计值等于子树平均值的节点数 —— 后序遍历实战
stm32·单片机·嵌入式硬件·算法
xiangyun613 小时前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
诸神缄默不语3 小时前
小春学习日刊 2026年第1期:2026.10.13
学习
xxwl5853 小时前
三、区域赛算法模版第三章---字符串相关算法
笔记·学习·算法
信奥卷王3 小时前
[GESP202509 六级] 划分字符串(含视频)
数据结构·算法
酒醉的胡铁4 小时前
相似度搜索的常见算法
算法·ai
局部有解4 小时前
Leetcode Hot100 - 最长连续序列
算法·leetcode·职场和发展