LeetCode:124二叉树中的最大路径和

java 复制代码
/**
 * 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 {
    //记录最终的最大路径和,初始为极小值,防范全树都为负数的情况
    int maxSum = Integer.MIN_VALUE;
        
    public int maxPathSum(TreeNode root) {
        calculateSinglePath(root);
        return maxSum;
    }
    //计算当前节点能为父节点提供的最大路径和
    private int calculateSinglePath(TreeNode node){
        if(node == null){
            return 0;
        }
        //递归计算左右子树
        int leftProfit = Math.max(0,calculateSinglePath(node.left));
        int rightProfit = Math.max(0,calculateSinglePath(node.right));
        //倒V型的内部和
        int currentInternalSum = leftProfit + node.val + rightProfit;

        maxSum = Math.max(maxSum, currentInternalSum);

        return node.val + Math.max(leftProfit,rightProfit);
    }
}

maxSum用于记录全局最终的最大值;而函数返回值用于记录局部最大值,往上传递给父节点

相关推荐
Yyyyyy~6 小时前
【java】运算符
java
鹿角片ljp6 小时前
LeetCode 22:括号生成|回溯dfs、剪枝与 char[] 覆盖代替撤销
算法·深度优先
古法安卓6 小时前
Android-切换白天黑夜内存不足问题排查
android·java·android studio
Dreams_l6 小时前
如何保证RabbitMQ消息可靠传输
java·rabbitmq·java-rabbitmq
MacroZheng6 小时前
面试官皱眉:"你懂 Vibe Coding,那你说superpowers和grill-me怎么选?",我:"小孩才做选择,我全都要!"
java·人工智能·后端
大模型码小白6 小时前
【AI大模型】DeepSeek Harness 深度解析:大模型评测框架的架构与实践
java·运维·人工智能·spring·架构·自动化
sylviiiiiia6 小时前
leetcode hot100
python·算法·leetcode
Mr.Java.6 小时前
本地测试全绿,上线 SQL 报错?Spring Boot 容器级 DT 测试实战指南(附Skills)
java·测试用例·springboot·testcontainers·dt·java测试skills·dt测试
纪伊路上盛名在6 小时前
Kabsch算法的Julia实现
开发语言·算法·julia·序列分析·蛋白质·rmsd
维天说6 小时前
Agent会听人话,反而更难管
java·开发语言·人工智能