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

二叉树的最大路径和

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

/*
描述
给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。
这个路径的开始节点和结束节点可以是二叉树中的任意节点
例如:
给出以下的二叉树:
{1,2,3}
返回的结果为6
Main idea:
问题分解,求树的最大路径,递归树的节点
有三种可能:
最大路径经过该节点本身从左子树到右子树
最大路径经过节点本身向父节点发展
最大路径就是节点本身
*/

class Solution {
public:
    int maxPathSum(TreeNode* root) {
        postOrder(root);
        return maxSum;
    }
    int postOrder(TreeNode* root) {
        if (!root) return 0;
        int left = postOrder(root->left);
        int right = postOrder(root->right);
        int current = root->val;
        if (left > 0) current += left;
        if (right > 0) current += right;
        maxSum = max(maxSum, current);      // 最大路径是否是经过该节点本身从左子树到右子树或最大路径就是节点本身
        return max(root->val, max(left, right) + root->val);    // 最大路径经过节点本身向父节点发展
    }
private:
    int maxSum = INT_MIN;
};
全部评论
可以,把路径,递归,玩的是明明白白,佩服
点赞 回复 分享
发布于 2023-02-19 21:53 北京
大牛
点赞 回复 分享
发布于 2023-02-19 21:17 北京

相关推荐

07-02 18:09
门头沟学院 Java
苍穹外卖和谷粒商城这俩是不是烂大街了,还能做吗?
想去重庆的鸽子在吐槽:你不如把这俩做完自己搞明白再优化点再来问 何必贩卖焦虑
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
一口洪烧肉:哈哈哈哈哈哈哈哈哈哈哈硬要啊
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

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