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

二叉树中的最大路径和

https://www.nowcoder.com/practice/8fda1d22554f4824b0ef9c26f35e54dd

n = int(input())

import sys
sys.setrecursionlimit(100000)

value = list(map(int , input().split(' ')))

if len(value)==1:
    print(value[0])
    sys.exit()

father = list(map(int , input().split(' ')))

map  = [ [] for i in range(n+1)]

for i in range(n):
    if father[i]!=0:
        #map[i+1].append(father[i])
        map[father[i]].append(i+1)
value.insert(0,0)
dp = value[:]





def dfs(root):
    if father[root-1]:
        dp[root] = max(dp[root],dp[father[root-1]]+value[root])
    if len(map[father[root-1]])==2:
        dp[root] = max(dp[root],value[father[root-1]]+value[map[father[root-1]][0]]+value[map[father[root-1]][1]])
    for son in map[root]:
        dfs(son)
    
dfs(1)


print(max(dp))

因为一个节点最多连接两个其他的节点,没运行到一个节点判断为

dp[root] = max(dp[root],dp[root]+dp[father],value(father)+value(father's left son)+value(father's right son))

全部评论

相关推荐

lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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