Binary Tree Maximum Path Sum leetcode java

题目

Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

For example:
Given the below binary tree,

       1
      / \
     2   3

Return 6.

 

题解

 递归求解。

 取当前点和左右边加和,当前点的值中最大的作为本层返回值。并在全局维护一个max。使用数组,因为是引用类型。所以在递归过程中可以保存结果。

代码如下:

复制代码
 1     public int maxPathSum(TreeNode root) {
 2         int[] max = new int[1];
 3         max[0] = Integer.MIN_VALUE;
 4         findmax(root,max);
 5         return max[0];
 6     }
 7     
 8     public int findmax(TreeNode root, int[] max){
 9         if(root==null)
10             return 0;
11         
12         int left = findmax(root.left,max);
13         int right = findmax(root.right,max);
14         
15         int ans = Math.max(root.val,Math.max(root.val+left, root.val+right));
16         
17         max[0] = Math.max(max[0],Math.max(ans,root.val+left+right));
18         
19         return ans;
20         
21     }
复制代码

 

posted @   爱做饭的小莹子  阅读(2300)  评论(3编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示