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

相关推荐
wuqingshun3141593 分钟前
JAVA中的注解原理是什么?
java
音视频工程实战6 分钟前
PromptQL 新手入门与实战指南
数据库·sql·算法
Python+9925 分钟前
Java 编程语言入门指南
java·开发语言
wabs66630 分钟前
关于图论【卡码网104.建造最大岛屿的思考】
数据结构·算法·图论
玖玥拾44 分钟前
LeetCode 27 移除元素
算法·leetcode
冻柠檬飞冰走茶1 小时前
PTA基础编程题目集 7-15 计算圆周率(C语言实现)
c语言·开发语言·数据结构·算法
问商十三载1 小时前
AI 引擎生成式优化两种思路怎么选?2026 对比分析附选型方法
人工智能·算法
huahailing10242 小时前
Spring Boot 集成 XXL-Job 完整实现方案(支持动态CRUD)
java·spring boot·后端
薛定谔的猫-菜鸟程序员2 小时前
基于 Electron 的本地短视频解析与下载工具:架构设计与工程实践
java·electron·音视频