- 节点间最长距离的变种,代码如下
class Solution {
public:
int maxPathSum(TreeNode *root) {
if(!root) return ret;
ret = INT_MIN;
dfs(root);
return ret;
}
int dfs(TreeNode * node)
{
if(node == NULL) return 0;
int val = node->val;
int left = dfs(node->left);
int right = dfs(node->right);
if(left > 0) val += left;
if(right > 0) val += right;
if(val > ret)
ret = val;
return max(node->val, max(node->val + left, node->val + right));
}
private:
int ret;
};