leetcode - 124. 二叉树中的最大路径和
题目:
代码:
#include <iostream>
#include <cmath>
using namespace std;
int res=INT_MIN;
typedef struct TreeNode{
int val;
TreeNode *left,*right;
}TreeNode,*BiTree;
void create(BiTree &T){
int tn;
cin>>tn;
if(tn==-1){
T=NULL;
return;
}else{
T=new TreeNode;
T->val=tn;
create(T->left);
create(T->right);
}
}
int oneSideMax(TreeNode* root){
if(!root){
return 0;
}
int left = max(0,oneSideMax(root->left));
int right = max(0,oneSideMax(root->right));
res=max(res,left+right+root->val);
return max(left,right) + root->val;
}
int maxPathSum(TreeNode* root) {
oneSideMax(root);
return res;
}
int main(){
TreeNode* root;
create(root);
maxPathSum(root);
cout<<res;
return 0;
}