leetcode 501 二叉搜索树的众数
程序员文章站
2022-05-20 16:14:17
...
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。
Map<Integer,Integer> map = new HashMap<>();
public int[] findMode(TreeNode root) {
dfs(root);
int num =0;
List<Integer> res = new ArrayList<>();
for (Map.Entry<Integer,Integer> item:map.entrySet()){
if (item.getValue() > num) num = item.getValue();
}
for (Map.Entry<Integer,Integer> item:map.entrySet()){
if (item.getValue() == num) res.add(item.getKey());
}
int[] ints = new int[res.size()];
for (int i=0;i<res.size();i++){
ints[i] = res.get(i);
System.out.println(res.get(i));
}
return ints;
}
void dfs(TreeNode root){
if (root == null) return;;
dfs(root.left);
Integer ifAbsent = map.putIfAbsent(root.val, 1);
if (!Objects.isNull(ifAbsent)){
map.put(root.val,ifAbsent+1);
}
dfs(root.right);
}