聊聊跟三哥三姐面试和共事的经历

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 466|回复: 2
收起左侧

[Leetcode] 【LintCode】Binary Tree Maximum Path Sum我的逻辑似乎不对

[复制链接] |试试Instant~ |关注本帖
小马3107 发表于 2015-7-30 18:21:04 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
本帖最后由 小马3107 于 2015-7-30 18:38 编辑

LintCode上写的题。可能逻辑有不对的地方,自己一直没看出来。
不过话说如果输入是{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}的话, 应该生成一个只有左子树有内容的树。
为什么输出是56而不是136呢?

1.jpg
stellari 发表于 2015-7-30 18:32:26 | 显示全部楼层
本帖最后由 stellari 于 2015-7-30 18:35 编辑

从你说“为什么结果应是56而不是136”这句话来看,我想你是没有理解这个题的意思。这个题是要找到一条“连续的”,“无分叉”的路径,使得这个路径中的和最大。136是这个树中所有元素的和。因为树中的元素不可能同时出现在同一条路径上。所以,答案一定会小于136。

由题意可知,maxPathSum函数的返回值必须是“树的最大路径和”,这个路径可能开始于树的任何位置。那么
int tempSum = insideLeft + insideRight + root.val这段的意思是:“左/右子树中的最大路径” + root.val。这三者加起来是没意义的。因为左右子树中的最大路径很可能和root根本就不相连。

所以,在一个值全是正数的树中,你的代码一定会返回“左子树的所有元素和”+“右子树的所有元素和”+根元素。最后的效果就是把树中所有元素加了一遍,而不是求最大路径和。

你不应该递归调用maxPathSum,只需递归调用maxThroughPath(当然要做一些修改)即可。
回复 支持 反对

使用道具 举报

全球28万学生4.7分推荐
 楼主| 小马3107 发表于 2015-7-30 20:33:26 | 显示全部楼层
本帖最后由 小马3107 于 2015-7-30 21:11 编辑
stellari 发表于 2015-7-30 18:32
从你说“为什么结果应是56而不是136”这句话来看,我想你是没有理解这个题的意思。这个题是要找到一条“连 ...

明白了.我的代码的确有问题.
Thanks!
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-22 12:50

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表