You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求解二叉树(数字三角形)最大路径总和的最优算法是什么

二叉树最大路径和求解疑问

二叉树示例结构

每个节点可拥有左、右两个子节点
上述示例中,路径[7, 3, 8, 7, 5]对应的总和为最大路径和

最初思路为每层选择值更大的子节点即可得到最优结果,验证后发现该思路并不正确,最初编写的实现代码如下:

triangle = [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]]
depth = 0
total = []

N = triangle[0][0]
def min_max(depth, N, total):
    if (depth+1) == len(triangle):
        return total
    else:
        a,b = triangle[depth+1][triangle[depth].index(N)], triangle[depth+1][triangle[depth].index(N)+1]
        total.append(max(a,b))
        N = max(a,b)
        return min_max(depth+1, N, total)
min_max(depth, N, total) # 运行输出 [8, 1, 7, 5]

运行上述代码得到的结果为[8, 1, 7, 5],无法得到正确的最大路径和。之后考虑过枚举所有路径计算总和后比对最大值,但该方案时间复杂度过高,需要找到求解该问题的合适算法。

内容的提问来源于stack exchange,提问作者jtoyhh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 03:09:44