class Solution {
int result = Integer.MIN_VALUE;
public int maxPathSum(TreeNode root) {
dfs(root);
return result;
}
public int dfs(TreeNode root){
if(root == null) return 0;
// 左右子树的最大值,若是负数就舍弃
int left = Math.max(dfs(root.left), 0);
int right = Math.max(dfs(root.right), 0);
// 与之前的最大值作比较
result = Math.max(result, root.val + left +right);
return root.val + Math.max(left, right);
}
}
124.二叉树中的最大路径和
最新推荐文章于 2025-12-05 10:55:08 发布
该博客介绍了一个求解树结构中最大路径和的算法。通过深度优先搜索(DFS)策略,递归地计算每个节点的左右子树的最大值,并更新全局最大路径和。在每个节点处,选择当前节点值加上左右子树中较大的那一个作为当前路径和,返回这个值以供上一层节点使用。最终返回的结果即为整棵树的最大路径和。
811

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



