这题试了很多次也没成功,从网上找了段代码。
这里看解说
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
int maxAcrossRoot;
public int maxPathSum(TreeNode root) {
if(root == null)
return 0;
maxAcrossRoot = Integer.MIN_VALUE;
int maxEndRoot = recur(root);
return Math.max(maxEndRoot, maxAcrossRoot);
}
public int recur(TreeNode root){
if(root == null)
return 0;
int left = recur(root.left);
int right = recur(root.right);
int currentMax = root.val;
if(left > 0)
currentMax += left;
if(right > 0)
currentMax += right;
maxAcrossRoot = Math.max(currentMax, maxAcrossRoot);
int maxEndRoot = Math.max(root.val, Math.max(root.val + left, root.val + right));
return maxEndRoot;
}
}

本文介绍了一种求解二叉树中最大路径和的算法实现,通过递归方式遍历二叉树节点,计算以当前节点为根节点的最大路径和,并返回经过该节点的最大值。最终找到整个二叉树的最大路径。

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



