LeetCode 二叉搜索树中的众数

1.题目

在这里插入图片描述


2.思路(Java语言描述)

中序遍历过程中记录Max,将所有节点用Map做一个映射,最后遍历Map,选出符合条件的key即可

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    

    Map<Integer,Integer> map = new HashMap<Integer,Integer>();
    int max = 0;

    public int[] findMode(TreeNode root) {
    
    
        centerOrder(root,map);
        return mapToIntegerArray(map);
    }

    public void centerOrder(TreeNode root,Map<Integer,Integer> map){
    
    
        if(root!=null){
    
    
            centerOrder(root.left,map);
            int speed = map.getOrDefault(root.val,0)+1;
            if(max<speed){
    
    
                max = speed;
            }
            map.put(root.val,speed);
            centerOrder(root.right,map);
        }
    }

    public int[] mapToIntegerArray(Map<Integer,Integer> map){
    
    
        if(map == null){
    
    
            return null;
        }
        Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator();
        ArrayList<Integer> list = new ArrayList<Integer>();
        while(entries.hasNext()){
    
    
            Map.Entry<Integer,Integer> entry = entries.next();
            int tmp = entry.getValue();
            if(tmp == max){
    
    
                list.add(entry.getKey());
            }
        }
        int[] result = new int[list.size()];
        int cnt=0;
        for(Integer num:list){
    
    
            result[cnt++] = num.intValue();
        }
        return result;
    }

}

3.关于Map的知识点复习

1.遍历Map效率最高的是用Iterator迭代器遍历

Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator();
while(entries.hasNext()){
    
    
    Map.Entry<Integer,Integer> entry = entries.next();
    System.out.println("key: "+entry.getKey()+", value: "+entry.getValue());
}

2.map.getOrDefault()

//如果map中有存储key的value,则 temp = map.get(key)
//否则 temp = 0;
int temp = map.getOrDefault(key,0);

猜你喜欢

转载自blog.csdn.net/weixin_43967679/article/details/108771528
今日推荐