链接
给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。
如果树中有不止一个众数,可以按 任意顺序 返回。
假定 BST 满足如下定义:
结点左子树中所含节点的值 小于等于 当前节点的值
结点右子树中所含节点的值 大于等于 当前节点的值
左子树和右子树都是二叉搜索树
示例 1:
代码语言:javascript复制输入:root = [1,null,2,2]
输出:[2]
代码语言:javascript复制/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func findMode(root *TreeNode) []int {
r := map[int]int{}
search(root, r)
max := -1
res := []int{}
for n, v := range r {
if max <= v {
if max < v {
max = v
res = res[0:0]
}
res = append(res, n)
}
}
return res
}
func search(root *TreeNode, rec map[int]int) {
if root == nil {
return
}
rec[root.Val]
search(root.Left, rec)
search(root.Right, rec)
}