zoukankan      html  css  js  c++  java
  • 501. Find Mode in Binary Search Tree

    Given a binary search tree (BST) with duplicates, find all the mode(s) (the most frequently occurred element) in the given BST.

    Assume a BST is defined as follows:

    • The left subtree of a node contains only nodes with keys less than or equal to the node's key.
    • The right subtree of a node contains only nodes with keys greater than or equal to the node's key.
    • Both the left and right subtrees must also be binary search trees.

    For example:
    Given BST [1,null,2,2],

       1
        
         2
        /
       2

    return [2].

    Note: If a tree has more than one mode, you can return them in any order.

    Follow up: Could you do that without using any extra space? (Assume that the implicit stack space incurred due to recursion does not count).

    题目含义:给一个二叉搜索树,求出现次数最多的数是哪个(哪些)

     1     private int maxMode = Integer.MIN_VALUE;
     2     private void readNodeValue(TreeNode root,Map<Integer,Integer> valueMap)
     3     {
     4         if (root == null) return;
     5         valueMap.put(root.val,valueMap.getOrDefault(root.val,0)+1);
     6         maxMode = Math.max(maxMode,valueMap.get(root.val));
     7         readNodeValue(root.left,valueMap);
     8         readNodeValue(root.right,valueMap);
     9     }
    10     
    11     
    12     public int[] findMode(TreeNode root) {
    13       Map<Integer,Integer> valueMap = new HashMap<>();
    14         readNodeValue(root,valueMap);
    15         List<Integer> temp = new ArrayList<>();
    16         for (Map.Entry<Integer,Integer> entry:valueMap.entrySet())
    17         {
    18             if (entry.getValue() == maxMode)
    19             {
    20                 temp.add(entry.getKey());
    21             }
    22         }
    23         int[] modes = new int[temp.size()];
    24        for (int i=0;i<modes.length;i++)
    25        {
    26            modes[i] = temp.get(i);
    27        }
    28         return modes;        
    29     }
  • 相关阅读:
    bzoj3675 [Apio2014]序列分割
    bzoj3206 [Apio2013]道路费用
    bzoj3205 [Apio2013]机器人
    bzoj4241 历史研究
    bzoj2821 作诗(Poetize)
    bzoj2724 [Violet 6]蒲公英
    bzoj2811 [Apio2012]Guard
    bzoj2809 [Apio2012]dispatching
    PHP 文字,图片水印,缩略图,裁切成小图(大小变小)
    PHP文件下载方式
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7707289.html
Copyright © 2011-2022 走看看