题目链接:
https://leetcode.com/problems/binary-tree-maximum-path-sum/description/
Given a non-empty binary tree, find the maximum path sum.
For this problem, a path is defined as any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The path must contain at least one node and does not need to go through the root.
Example 1:
Example 2:
dfs 深度遍历
遍历的时候,记录根节点到左子树和右子树中的某个点的最大距离,再比较下即可
class Solution { public: int ans = -99999999; int maxPathSum(TreeNode* root) { dfs(root); return ans; } int dfs(TreeNode* root) { if(root->left==NULL&&root->right==NULL) { ans=max(ans,root->val);return root->val;} if(root->left!=NULL&&root->right==NULL) { int xleft = dfs(root->left); ans = max(ans,max(root->val+xleft,root->val)); return max(root->val+xleft,root->val); } if(root->left==NULL&&root->right!=NULL) { int xright = dfs(root->right); ans = max(ans,max(root->val,root->val+xright)); return max(root->val,root->val+xright); } if(root->left!=NULL&&root->right!=NULL) { int xleft = dfs(root->left); int xright = dfs(root->right); ans = max(ans,max(root->val,max(root->val+xleft,max(root->val+xleft+xright,root->val+xright)))); return max(root->val,max(root->val+xleft,root->val+xright)); } } };