Binary Tree Maximum Path Sum Posted on 2018-09-24 Descriptionhttps://leetcode.com/problems/binary-tree-maximum-path-sum/description/ Solution1234567891011121314151617181920212223242526272829303132/** * 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) { int max = -10000; this->findPath(root, max); return max; } int findPath(TreeNode* root, int& max) { if (root == NULL) return -100000; int left = this->findPath(root->left, max); if (left > max) max = left; int right = this->findPath(root->right, max); if (right > max) max = right; int cur = root->val + (left >= 0 ? left : 0) + (right >= 0 ? right : 0); if (cur > max) max = cur; int bias = 0; if (left > 0) bias = left; if (right > 0 && right > left) bias = right; return root->val + bias; }};