给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
示例 1:
输入: [1,2,3]
1
/ \
2 3
输出: 6
示例 2:
输入: [-10,9,20,null,null,15,7]
-10
/
9 20
/
15 7
输出: 42
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int mx=Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
dfs(root);
return mx;
}
public int dfs(TreeNode tr){
int l=0,r=0;
if(tr.left!=null){
l=Math.max(l,dfs(tr.left));
}
if(tr.right!=null){
r=Math.max(r,dfs(tr.right));
}
mx=Math.max(mx,tr.val+l+r);//以该结点为根(转点)所能得到的最大值(向左和向右扩展)
return tr.val+Math.max(l,r);//返回经过该结点向左或向右扩展所能得到的最大值
}
}
本文深入探讨了寻找二叉树中最大路径和的算法实现,通过具体示例和代码解析,详细介绍了如何计算从任意节点到任意节点的路径上的最大和,包括根节点在内的任意节点均可作为路径起点或终点。

1万+

被折叠的 条评论
为什么被折叠?



