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用于记录全局最终的最大值;而函数返回值用于记录局部最大值,往上传递给父节点

相关推荐
NE_STOP10 小时前
Vide Coding--AI编程工具的选择
java
通信小呆呆11 小时前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
码云数智-园园11 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆11 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
benben04411 小时前
强化学习之DQN算法族(基于gymnasium开发)
算法
小宇宙Zz11 小时前
Maven依赖冲突
java·服务器·maven
swordbob11 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯12 小时前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
小小工匠12 小时前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化