ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/9/20 9:21:24 拓冰建站 浏览量
124. 二叉树中的最大路径和

维护一个全局最大路径和,找出每个节点的最大贡献值,具体细节看代码。
参考链接:https://leetcode.cn/problems/binary-tree-maximum-path-sum/solutions/297005/er-cha-shu-zhong-de-zui-da-lu-jing-he-by-leetcode-/

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {private int maxSum = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) {// int temp = maxGain(root);maxGain(root);return maxSum;}private int maxGain(TreeNode root) { // 贡献值指的是从当前root出发if (root == null) return 0;// 左右子树最大贡献值int leftGain = Math.max(maxGain(root.left), 0);int rightGain = Math.max(maxGain(root.right), 0);// 计算路径的时候应该将目前节点root作为中间节点,联通两端int pricePath = leftGain + rightGain + root.val;maxSum = Math.max(pricePath, maxSum);// 返回当前节点的最大贡献值,因为root不能重复,一次只能选择其中一边return root.val + Math.max(leftGain, rightGain);}
}