题解 | #二叉树中的最大路径和#

二叉树中的最大路径和

https://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a

/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 *	TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 * };
 */
class Solution {
public:
    auto dfs(TreeNode* node){
        if(node==NULL)return 0;                        //节点为空则取0
        int lsum=dfs(node->left);                      //递归左路径最大值
        int rsum=dfs(node->right);                     //递归右路径最大值
        sum=max(sum,lsum+rsum+node->val);              //路径最大值=左右路径最大值+val
        return max(0,max(lsum,rsum)+node->val);        //返回单段路径最大值,小于0则放弃此路径
    }
    int maxPathSum(TreeNode* root) {
        dfs(root);
        return sum;
    }
private:
    int sum=-1000;
};

全部评论

相关推荐

WhiteAlbum...:学院本2中大厂垂直实习➕acm比赛 秋招0面试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务