题解 | #二叉树的最大路径和#
二叉树的最大路径和
http://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类
* @return int整型
*/
int res = INT_MIN;
int maxPathSum(TreeNode* root) {
// write code here
getmax(root);
return res;
}
int getmax(TreeNode* root){
if(!root) return 0;
int leftmax = max(0,getmax(root->left));
int rightmax = max(0,getmax(root->right));
//前面的是全是正数的情况,自然就是全部相加,然后如果遇到了负数,那此层三个局部最大那必然是最大的哪一个相加
res = max(res,max(root->val+leftmax+rightmax, root->val + max (leftmax,rightmax)));
//本层只需要返回这个节点加左右根最大值的最大值
return max(leftmax,rightmax) + root->val;
}
}; 算法解析 文章被收录于专栏
这里主要是算法岗的自我思路总结
vivo公司氛围 350人发布
查看9道真题和解析