【发布时间】:2021-02-18 03:24:34
【问题描述】:
给定二维数组
2 1 5 2 7
2 4 5 1 2
9 2 4 1 0
6 5 4 3 2
需要找到最大和的值。 我们可以从第一行开始,然后按方向移动:左下、下或右下 在本例中为:5 - 4 - 9 - 6 = 24 我有一个想法,将这个数组转换为具有 3 个“孩子”(左、下和右)的树。 并使用这棵树,假设第一行中的每个元素都是不同树的根,计算所有分支的总和。 也许,有一些其他的建议或解决方案,因为我无法让它发挥作用。 以下是查找所有分支总和的代码:
def branchHelper(root, sums=None, branchSum=0):
if root is None:
return
if sums is None:
sums = []
branchSum += root.value
if root.left is None and root.right is None and root.middle is None:
sums.append(branchSum)
branchHelper(root.left, sums, branchSum)
branchHelper(root.middle, sums, branchSum)
branchHelper(root.right, sums, branchSum)
return sums
还有树代码:
class Tree:
def __init__(self, value, left=None, middle=None, right=None):
self.value = value
self.left = left
self.middle = middle
self.right = right
【问题讨论】:
标签: python algorithm multidimensional-array