Binary Tree Maximum Path Sum
方法:采用递归的方式
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: int maxPathSum(TreeNode* root) { maxSum = INT_MIN; dfs(root); return maxSum; } private: int maxSum; int dfs(TreeNode *root) { if(root == nullptr) return 0; int l = dfs(root->left); int r = dfs(root->right); int sum = root->val; if(l > 0) sum += l; if(r > 0) sum += r; maxSum = max(sum, maxSum); return max(l, r) > 0 ? max(r, l) + root->val : root->val; } };