【发布时间】:2019-08-11 06:51:53
【问题描述】:
我正在创建 python 代码来识别二叉树的最大(节点总和)路径。在遍历树的同时,我想将路径方向(“l”或“r”分别表示左右)附加到一个列表中,以便稍后在代码中调用。
到目前为止,我设法正确地获得了最大路径(节点的最大总和)和第一个路径方向,但不是完整路径。
我觉得我快完成这项工作了,只需要一个正确方向的提示。
def sum_max_path(root):
if not root:
return
if root.left is None:
l_sum = 0
else:
l_sum = sum_max_path(root.left)
if root.right is None:
r_sum = 0
else:
r_sum = sum_max_path(root.right)
if l_sum > r_sum:
root.list.append("l")
return root.value + l_sum
elif l_sum < r_sum:
root.list.append("r")
return root.value + r_sum
else:
root.list.append("l")
return root.value + l_sum
return root.value + max(l_sum, r_sum)
return sum_max_path(root), root.list
这个的输出是:
The total value in this path is: 8
The largest value path is: ['l']
如果输出是我想要的:
The largest value path is ['l', 'r', 'l']
(显然取决于路径基于生成树的长度)。
【问题讨论】:
标签: python binary-tree binary-search-tree