题目描述:
给你一个含重复值的二叉搜索树(BST)的根节点 root ,
找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。
如果树中有不止一个众数,可以按 任意顺序 返回。
假定 BST 满足如下定义:
结点左子树中所含节点的值 小于等于 当前节点的值
结点右子树中所含节点的值 大于等于 当前节点的值
左子树和右子树都是二叉搜索树
示例 1:
输入:root = [1,null,2,2]
输出:[2]
示例 2:
输入:root = [0]
输出:[0]
var findMode = function (root) {
let map = new Map()
const help = (root) => {
if (root) {
map.has(root.val) ?
map.set(root.val, map.get(root.val) + 1) :
map.set(root.val, 1);
help(root.left)
help(root.right)
}
}
help(root)
let arr = []
let arrayObj = Array.from(map)
arrayObj.sort((a, b) => b[1] - a[1])
let max = arrayObj[0][1];
for (let [key, value] of map) {
if (value === max) {
arr.push(key)
}
}
return arr
};