class Node:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def max_subtree_sum_binary(root):
max_sum = float("-inf")
def dfs(node):
nonlocal max_sum
if not node:
return 0
current_sum = node.val + dfs(node.left) + dfs(node.right)
max_sum = max(max_sum, current_sum)
return current_sum
dfs(root)
return max_sum
if __name__ == "__main__":
root = Node(10)
root.left = Node(5)
root.right = Node(-3)
root.left.left = Node(3)
root.left.right = Node(2)
root.right.right = Node(11)
print("Maximum Subtree Sum:", max_subtree_sum_binary(root))
Y2xhc3MgTm9kZToKCiAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsPTAsIGxlZnQ9Tm9uZSwgcmlnaHQ9Tm9uZSk6CiAgICAgICAgc2VsZi52YWwgPSB2YWwKICAgICAgICBzZWxmLmxlZnQgPSBsZWZ0CiAgICAgICAgc2VsZi5yaWdodCA9IHJpZ2h0CgoKZGVmIG1heF9zdWJ0cmVlX3N1bV9iaW5hcnkocm9vdCk6CiAgICBtYXhfc3VtID0gZmxvYXQoIi1pbmYiKQoKICAgIGRlZiBkZnMobm9kZSk6CiAgICAgICAgbm9ubG9jYWwgbWF4X3N1bQogICAgICAgIGlmIG5vdCBub2RlOgogICAgICAgICAgICByZXR1cm4gMAoKICAgICAgICBjdXJyZW50X3N1bSA9IG5vZGUudmFsICsgZGZzKG5vZGUubGVmdCkgKyBkZnMobm9kZS5yaWdodCkKICAgICAgICBtYXhfc3VtID0gbWF4KG1heF9zdW0sIGN1cnJlbnRfc3VtKQogICAgICAgIHJldHVybiBjdXJyZW50X3N1bQoKICAgIGRmcyhyb290KQogICAgcmV0dXJuIG1heF9zdW0KCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgcm9vdCA9IE5vZGUoMTApCiAgICByb290LmxlZnQgPSBOb2RlKDUpCiAgICByb290LnJpZ2h0ID0gTm9kZSgtMykKICAgIHJvb3QubGVmdC5sZWZ0ID0gTm9kZSgzKQogICAgcm9vdC5sZWZ0LnJpZ2h0ID0gTm9kZSgyKQogICAgcm9vdC5yaWdodC5yaWdodCA9IE5vZGUoMTEpCgogICAgcHJpbnQoIk1heGltdW0gU3VidHJlZSBTdW06IiwgbWF4X3N1YnRyZWVfc3VtX2JpbmFyeShyb290KSk=