Binary Tree Maximum Path Sum

最近忙着水论文,好久没刷题了,现在真是看到论文就烦啊,来刷刷题。

返回最大值,这题需要注意的是,在递归的时候不能返回最大值,只能返回单向的值,最大值每次保留即可。

int maxPathSum(TreeNode *root)
      {
          max_sum = INT_MIN;
          dfs(root);
          return max_sum;
      }
      int dfs1(const TreeNode *root)
      {
          if (root == nullptr)return 0;
          int l = dfs1(root->left);
          int r = dfs1(root->right);
          int sum = root->val;
          if (l > 0)sum += l;
          if (r > 0)sum += r;

          max_sum = max(max_sum, sum);
          //注意返回的是单向的值而不是最大值
          return max(l, r) > 0 ? max(l, r) + root->val : root->val;

      }
View Code
原文地址:https://www.cnblogs.com/573177885qq/p/5655939.html