501. 二叉搜索树中的众数

2024-07-13 23:36:11 浏览数 (1)

链接

给你一个含重复值的二叉搜索树(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)
}

0 人点赞