汪图南
  • RAG

    • RAG
  • 快速入门
  • 高级技巧
前端面试之道
  • 打包工具

    • Webpack
    • Rollup
  • TypeScript

    • TypeScript基础
    • TypeScript类型挑战
  • CSS预编译器

    • SASS
  • 自动化测试

    • Vue应用测试
  • Vue2.0源码分析
  • Vue3.0源码分析
  • 数据结构和算法(基础)
  • LeetCode(刷题)
  • JavaScript书籍

    • 你不知道的JavaScript(上)
    • 你不知道的JavaScript(中下)
    • JavaScript数据结构和算法
    • JavaScript设计模式与开发实践
    • 深入理解ES6
  • Git书籍

    • 精通Git
Github
  • RAG

    • RAG
  • 快速入门
  • 高级技巧
前端面试之道
  • 打包工具

    • Webpack
    • Rollup
  • TypeScript

    • TypeScript基础
    • TypeScript类型挑战
  • CSS预编译器

    • SASS
  • 自动化测试

    • Vue应用测试
  • Vue2.0源码分析
  • Vue3.0源码分析
  • 数据结构和算法(基础)
  • LeetCode(刷题)
  • JavaScript书籍

    • 你不知道的JavaScript(上)
    • 你不知道的JavaScript(中下)
    • JavaScript数据结构和算法
    • JavaScript设计模式与开发实践
    • 深入理解ES6
  • Git书籍

    • 精通Git
Github
  • 介绍

    • 介绍
  • 推荐

    • LeetCode刷题推荐
  • 链表

    • 目录
    • 简单
    • 中等
    • 困难
  • 栈

    • 目录
    • 简单
    • 中等
    • 困难
  • 队列

    • 目录
    • 简单
    • 中等
    • 困难
  • 哈希表

    • 目录
    • 简单
    • 中等
    • 困难
  • 二叉树

    • 目录
    • 简单
    • 中等
    • 困难
  • 堆

    • 目录
    • 简单
    • 中等
    • 困难
  • 图

    • 目录
    • 简单
    • 中等
    • 困难
  • 搜索

    • 目录
    • 简单
    • 中等
    • 困难

困难

124.二叉树中的最大路径和

124.二叉树中的最大路径和

方法一:深度优先遍历

// way1: 深度优先遍历
// n为二叉树节点的数量
// 时间复杂度:O(n),每个节点都需要遍历
// 空间复杂度:O(n),最坏情况为一个链表,递归调用栈的内存开销为O(n)
var maxPathSum = function (root) {
  var maxSum = -Infinity;
  var maxGain = (root) => {
    if (root === null) {
      return 0;
    }
    const leftGain = Math.max(maxGain(root.left), 0);
    const rightGain = Math.max(maxGain(root.right), 0);
    const pathGain = root.val + leftGain + rightGain;
    maxSum = Math.max(maxSum, pathGain);
    return root.val + Math.max(leftGain, rightGain);
  }
  maxGain(root);
  return maxSum;
};
最后更新时间: 2025/5/6 15:36
贡献者: wangtunan
Prev
中等