Leetcode 124题:求⼆叉树中最⼤路径和

题目描述:

题目描述

示例:

在这里插入图片描述

分析题意:

1,该路径至少包含一个节点,不一定要经过根节点,可以只是一个结点;
2,从任意节点出发,到达任意节点
3,求:所有可能路径的最大值

测试用例:

在这里插入图片描述

代码和思路分析:

后序遍历;加到负值宁愿不加;

class Solution {
    int	ans	=	INT_MIN; 
    public :int maxPathSum(TreeNode* root) {
        oneSideMax(root);
        return ans;
    }
    
    int	oneSideMax(TreeNode*	root)	{ //后序遍历
        if	(root	==	nullptr)	return	0;		//特殊情况
        
        //看左边 和 右边; 如果是负数 甘愿不加 所以是加 0 ;
        int	left	=	max(0,	oneSideMax(root->left));		
        int	right	=	max(0,	oneSideMax(root->right));	
        	
        ans	=	max(ans,	left	+	right	+	root->val);	//记录但当前最大值 并更新	
        return	max(left,	right)	+	root->val; 
    }
};

运行结果:

在这里插入图片描述

总结:

最根本的。就是一个后序遍历!

猜你喜欢

转载自blog.csdn.net/qq_43473694/article/details/108898015