コード例 #1
0
            if curr.left:
                sums[curr.left] = curr_sum + curr.left.val
                queue.append(curr.left)
                maxSum = max(maxSum, sums[curr.left])
            if curr.right:
                sums[curr.right] = curr_sum + curr.right.val
                queue.append(curr.right)
                maxSum = max(maxSum, sums[curr.right])
            del(sums[curr])

        return maxSum


root = TreeNode(1)
root.left = TreeNode(2)
root.left.left = TreeNode(3)
root.left.right = TreeNode(4)
root.left.right.left = TreeNode(10)
root.left.right.right = TreeNode(7)
root.left.left.left = TreeNode(9)
root.left.left.right = TreeNode(8)


root.right = TreeNode(5)
root.right.right = TreeNode(6)

print root.print_tree(root)
print '----------------'

s = Solution()
print s.maxPathSum(root)