| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | /** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func widthOfBinaryTree(root *TreeNode) int {	m := make(map[int][]int)	helper(root, 0, 0, m)	max := 0	for _, v := range m {		max = maxInt(max, v[1]-v[0])	}	return max + 1}func helper(root *TreeNode, x, y int, m map[int][]int) {	if root == nil {		return	}	if v, ok := m[y]; ok {		v[0] = minInt(v[0], x)		v[1] = maxInt(v[1], x)	} else {		m[y] = []int{x, x}	}	helper(root.Left, x<<1, y+1, m)	helper(root.Right, (x<<1)|1, y+1, m)}func minInt(x, y int) int {	if x < y {		return x	}	return y}func maxInt(x, y int) int {	if x < y {		return y	}	return x}
 |