二叉树:二叉树的最大路径和

二叉树的最大路径和,枚举二叉树的每一个节点,通过当前节点最大路径和是, 当前节点左子树的最大路径和+root->val+当前节点右子树的最大路径。

struct node {
	int val;
	node *left, *right;
};

int ans = MIN_MAX;//用于维护最大路径和
int dfs(node *root) {
	if (!root) return 0;
	int left  = dfs(root->left);
	int right = dfs(root->right);
	ans = max(ans, max(root->val+left+right);
	return max(0, root->val + max(0, max(left, right)));
}


int maxPathSum(node* root) {
	dfs(root);
	return ans;
}
发布了235 篇原创文章 · 获赞 51 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ASJBFJSB/article/details/102962076
今日推荐