LeedCode_二叉树中的最大路径和

LeedCode_二叉树中的最大路径和

题目说明

给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。

输入: [1,2,3]
1
/ \
2 3
输出: 6

链接:https://leetcode-cn.com/problems/binary-tree-maximum-path-sum
分析:采用递归的方法,遍历所有的节点,计算每一个节点的最大代价

int max_sum = INT_MIN;
	int max_gain(TreeNode *root)
	{
		if (root==NULL)
			return 0;
		int left = max(max_gain(root->left), 0);
		int right = max(max_gain(root->right), 0);
		int price_path = root->val + left + right;
		max_sum = max(max_sum, price_path);
		return root->val + max(left, right);
	}
	int maxPathSum(TreeNode* root) 
	{
		max_gain(root);
		return max_sum;
	}
发布了63 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/luncy_yuan/article/details/104108332