题解 | #二叉树中的最大路径和#

二叉树中的最大路径和

http://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a

这题叶可以使用一个dfs的方法,遍历的每一个节点的返回值为这条节点即以改节点为根节点,且必须经过该节点的路径的最大值, 当遍历到叶节点的时候直接返回该节点的val, 当遍历的该节点为空时返回0, 当该节点为非叶节点时,这里我们要处理三个数据,分别为该节点本身的数值t_val,其左节点返回的值l_val,其右节点返回的值r_val,将t_vla、t_val+l_val、t_val+r_val和t_val+l_val+r_val的值进行比较,得到最大值max_val,再和事先定义的一个用于存储最终答案变量res进行比较,将res更新为更大的那个值,最后返回max_val即可。

int max_v(int a,int b,int c,int d)
{
    int max=a;
    max=max>b?max:b;
    max=max>c?max:c;
    max=max>d?max:d;
    return max;
}
static int res;
int dfs(struct TreeNode* t)
{
    if(t==NULL)return 0;
    if(t->left==NULL&&t->right==NULL)return t->val;
    int l=dfs(t->left);
    int r=dfs(t->right);
    int max_val=max_v(t->val, t->val+l, t->val+r,t->val+r+l);
    res=res>max_val?res:max_val;
    return max_val;
}
int maxPathSum(struct TreeNode* root ) {
    // write code here
    res=root->val;
    int k=dfs(root);
    res=k>res?k:res;
    return res;
}
全部评论

相关推荐

wish233:只是说使用xxx实现什么什么,没有原因,没有数据量化,就没有亮点。比如说第一个项目为什么要使用MongoDB?相比MySQL解决了什么问题,有什么好处?还有第二个项目用RestTemplate,既然引入了SpringCloud,你也写了自己的专业技能是能用里面的组件,那你为什么不用feign?还有就是你用的这些框架写上去的格式尽量统一一下,一会写spring,一会又是Spring,不太舒服
点赞 评论 收藏
分享
09-03 15:11
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务