AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

LeetCode 124. 【递归】二叉树中的最大路径和    原题链接    困难

作者: 作者的头像   开水白菜 ,  2021-01-21 23:06:55 ,  阅读 28


0


题目

任意节点到另一任意节点的路径的权值最大是多少

思路

  1. 如果当前节点的左右能连起来,则为node->left + node + node->right
  2. 如果连不起来,返回给当前节点的父节点 node + max(left,right)
/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    int max_sum = INT_MIN;
    int maxPathSum(TreeNode* root) {
        dfs(root);
        return max_sum;
    }
    int dfs(TreeNode* root){
        if(root == nullptr ) return 0 ;
        int left = max(0,dfs(root->left));
        int right = max(0,dfs(root->right));
        max_sum = max(max_sum,root->val + left + right);
        int ret = max(left,right) + root->val;
        return ret;
    }
};

0 评论

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息