| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- var cnt int = 1
 
- var max int = 0
 
- var pre int = 0
 
- var 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)
 
- }
 
 
  |