二叉树最大路径和

给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点

示例 1:

示例 2:

  • 一条从父节点延伸下来的路径,只能进入左子树或者右子树,不能同时进入左右子树
  • 只有在最大贡献值大于0的时候,才会选取对应的子节点
/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
let maxPathSum = function(root){
  let sum = Num.MIN_SAFE_INTEGER
  let dfs = (root) =>{
    if(!root){
       return 0
    }
    let left = dfs(root.left)
    let right = dfs(root.right)
    const maxSum = left + root.val + right // 计算总的最大路径和
    sum  = Math.max(sum, maxSum)  
    const max = root.val + Math.max(left, right)
    return max < 0 ? 0 : max
  }
   dfs(root)
   return sum
}
posted @   yiyunh  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示