| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | var cnt int = 1var max int = 0var pre int = 0var ini bool = false/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func findMode(root *TreeNode) (res []int) {	cnt, max, pre = 1, 0, 0 // Remember to init global variables at the beginning!	ini = false	if root == nil {		return	}	inorder(root, &res)	return}func inorder(root *TreeNode, res *[]int) {	if root == nil {		return	} // Inorder traversal changes BST into increasing sequence.	inorder(root.Left, res)	if ini {		if root.Val == pre {			cnt++		} else {			cnt = 1		}	} else {		ini = true	}	if max < cnt {		*res = []int{root.Val}		max = cnt	} else if max == cnt {		*res = append(*res, root.Val)	}	pre = root.Val	inorder(root.Right, res)}
 |