206 字
1 分钟
算法之二叉搜索树的众数

501. 二叉搜索树中的众数#

给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。

假定 BST 有如下定义:

  • 结点左子树中所含结点的值小于等于当前结点的值、
  • 结点右子树中所含结点的值大于等于当前结点的值
  • 左子树和右子树都是二叉搜索树

image-20210620160046650

解法:

1.递归中序遍历(开辟新空间)

思路:

image-20210620160831230

image-20210620160856742

image-20210620160915942

var findMode = function(root) {
let base = 0, count = 0, maxCount = 0;
let answer = [];
const update = (x) => {
if (x === base) {
++count;
} else {
count = 1;
base = x;
}
if (count === maxCount) {
answer.push(base);
}
if (count > maxCount) {
maxCount = count;
answer = [base];
}
}
const dfs = (o) => {
if (!o) {
return;
}
dfs(o.left);
update(o.val);
dfs(o.right);
}
dfs(root);
return answer;
};
算法之二叉搜索树的众数
https://nollieleo.github.io/posts/算法之二叉搜索树的众数/
作者
翁先森
发布于
2021-06-20
许可协议
CC BY-NC-SA 4.0