欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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);
    }