raghuvanshraj

124.cpp

Jul 29th, 2021
653
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
  8.  *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
  9.  *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
  10.  * };
  11.  */
  12. class Solution {
  13.     int ans;
  14.     int max_val_node;
  15. public:
  16.     int _maxPathSum(TreeNode *root) {
  17.         if (!root) {
  18.             return 0;
  19.         }
  20.        
  21.         max_val_node = max(max_val_node, root->val);
  22.        
  23.         int left = _maxPathSum(root->left);
  24.         int right = _maxPathSum(root->right);
  25.        
  26.         if (left < 0) {
  27.             left = 0;
  28.         }
  29.         if (right < 0) {
  30.             right = 0;
  31.         }
  32.        
  33.         ans = max(ans, max({
  34.             left,
  35.             right,
  36.             left + right + root->val
  37.         }));
  38.        
  39.         return max({
  40.             left,
  41.             right
  42.         }) + root->val;
  43.     }
  44.    
  45.     int maxPathSum(TreeNode* root) {
  46.         ans = 0;
  47.         max_val_node = INT_MIN;
  48.         _maxPathSum(root);
  49.         if (ans == 0) {
  50.             return max_val_node;
  51.         }
  52.         return ans;
  53.     }
  54. };
RAW Paste Data