题目
给定一个非空二叉树,返回其最大路径和。
本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。
思路
简单题,dfs返回当前节点为一端的最大链。答案有两种情况,1 当前节点到子孙的一条链 2 当前节点为中端,两端为子孙。
class Solution {
public:
int MAX = INT_MIN;
public:
int maxPathSum(TreeNode* root) {
maxPath(root);
return MAX;
}
int maxPath(TreeNode* root){
if(root == nullptr) return 0;
int R = maxPath(root->right);
int L = maxPath(root->left);
MAX = max(MAX,R+L+root->val);
MAX = max(MAX,root->val + max(0,max(R,L)));
return root->val + max(0,max(R,L));
}
};
本文深入探讨了寻找二叉树中最大路径和的算法实现,通过深度优先搜索策略,递归地计算以每个节点为端点的最大路径长度,最终确定整棵树的最大路径和。文章提供了详细的代码示例,帮助读者理解算法的具体实现。
275

被折叠的 条评论
为什么被折叠?



