class
Node:
def
__init__(
self
, key):
self
.key
=
key
self
.child
=
[]
def
maxSumUtil(root, resNode, maxsum):
if
root
=
=
None
:
return
currsum
=
root.key
count
=
len
(root.child)
for
i
in
range
(
0
, count):
currsum
+
=
root.child[i].key
resNode, maxsum
=
maxSumUtil(root.child[i],
resNode, maxsum)
if
currsum > maxsum:
resNode
=
root
maxsum
=
currsum
return
resNode, maxsum
def
maxSum(root):
resNode, maxsum
=
Node(
None
),
0
resNode, maxsum
=
maxSumUtil(root, resNode,
maxsum)
return
resNode.key
if
__name__
=
=
"__main__"
:
root
=
Node(
1
)
(root.child).append(Node(
2
))
(root.child).append(Node(
3
))
(root.child).append(Node(
4
))
(root.child[
0
].child).append(Node(
5
))
(root.child[
0
].child).append(Node(
6
))
(root.child[
2
].child).append(Node(
5
))
(root.child[
2
].child).append(Node(
6
))
(root.child[
2
].child).append(Node(
6
))
print
(maxSum(root))