| 1234567891011121314151617181920212223242526272829303132333435363738 | package main/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func maxPathSum(root *TreeNode) int {	maxInt := func(x, y int) int {		if x > y {			return x		}		return y	}	var recurse func(*TreeNode) int	max := root.Val	recurse = func(root *TreeNode) int { // Sum every path bottom-up is the key		if root == nil {			return 0		}		maxL := maxInt(0, recurse(root.Left)) // 0 means do not pick the path		maxR := maxInt(0, recurse(root.Right))		max = maxInt(max, root.Val+maxL+maxR)		return root.Val + maxInt(maxL, maxR)	}	recurse(root)	return max}// func main() {// 	tree := toBinaryTree(newInt(-10), newInt(9), newInt(20), nil, nil, newInt(15), newInt(7))// 	println(maxPathSum(tree), 42)// 	tree = toBinaryTree(newInt(1), newInt(2), newInt(3))// 	println(maxPathSum(tree), 6)// }
 |