【算法】【面试级】Hot100 124. 二叉树的最大路径和

分析

使用递归方法
主节点的最大和等于这个节点的值+左右节点最大和的最大值,往上递推
如果不准备往上递推,可以使用左最大和 +主的val + 右最大和

算法

//主函数
//1. 调用递归函数即可

//递归函数
//1. 递归
//2. 计算左右节点的最大和 若<0则归为0
//3. 将在这个节点停止时计算出的最大值和答案比较
//4. 返回左右节点最大和的较大值 + 主节点的val

//注意一个事情,ans最初应初始化为Integer.MIN_VALUE,应对root只有一个数 且是负数的情况

代码

class Solution {
	private int ans = Integer.MIN_VALUE;
	//主函数
    public int maxPathSum(TreeNode root) {
	    //1. 调用递归函数即可
	    maxGain(root);
	    return ans;
    }
    
    //递归函数
    private int maxGain(TreeNode root){
		//0. 边界条件
		if(root == null){
			return 0; 
		}
	    //1. 递归
		//2. 计算左右节点的最大和 若<0则归为0
		int leftMax = Math.max(maxGain(root.left), 0);
		int rightMax = Math.max(maxGain(root.right), 0);
		
		//3. 将在这个节点停止时计算出的最大值和答案比较
		ans = Math.max(leftMax + rightMax + root.val, ans);
		
		//4. 返回左右节点最大和的较大值 + 主节点的val
		return Math.max(leftMax, rightMax) + root.val;
    }

}
posted @ 2025-11-23 11:45  pangeding  阅读(5)  评论(0)    收藏  举报