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

二叉树中的最大路径和

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

思路:最大路径和的产生:左子树的单路径、右子树的单路径、左右子树的单路径和根节点值这三者之一。因此,先用两个变量存储左右子树的单路径(单路径就是只有从下到上的一条路径,没有左右)的最大和,分别取最大值即可。需要注意的是,取某条单路径的最大和的时候,如果某子树单路径之和加上根节点的值比根节点小,那么该子树的单路径之和直接舍弃。

class Solution {
public:
    int max_value = -32768;
    int maxPathSum(TreeNode* root) {
        return max(max_value,func(root));
    }
    int func(TreeNode* root){
        if(!root)return 0;
        int left = func(root->left);
        int right = func(root->right);
        max_value = max(left + root->val + right, max_value);
        return max(left + root->val, max(right + root->val, root->val));
    }
};
全部评论

相关推荐

能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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