は、ここに1つのアプローチです:
各ノードは子のリストのいずれかである
value
属性と
children
属性を持っていると仮定すると、
class Node:
def __init__(self, value):
self.value = value
self.children = []
def max_sum(root):
if len(root.children) == 0:
return root.value
sums = []
for child in root.children:
sums.append(root.value + max_sum(child))
return max(sums)
n_9 = Node(9)
n_9.children.extend([Node(1), Node(2), Node(5)])
n_8 = Node(8)
n_8.children.extend([Node(5)])
n_7 = Node(7)
n_7.children.extend([Node(15)])
n_10 = Node(10)
n_10.children = [n_9, n_8, n_7]
print max_sum(n_10)
# Output: 32
「合計」とは、リーフからルートまでのパス内の各ノードの値の合計を意味します。木はどのように表現されていますか? –