是否有一棵树可以对物体进行排名?

时间:2013-07-15 15:08:43

标签: java collections

我编写了一个红黑二进制统计树,以获得与红黑树中其他对象相当的任意对象的等级。我想知道是否有一个提供相同功能的API类。

如果给定一个等级,该类也有好处,该类具有在树中返回该等级的对象的函数。

请注意,红黑BST允许在log(n)时间内执行这两项操作,其中n是树中对象的数量。

4 个答案:

答案 0 :(得分:2)

标准API没有订单统计树。 TreeMap特别没有找到密钥等级或在O(log n)时间内按等级查找密钥的方法。

它看起来不像通常的附加库(Apache Commons Collections,Google Guava)也有订单统计树。

答案 1 :(得分:2)

查看http://algs4.cs.princeton.edu/33balanced/RedBlackBST.java.html

教授。 Sedgewick将树命名为RedBlack,因此,很可能,它是RedBlack BST的正确实现。它也有等级(在O(lgN)中运行)。 (如果它支持删除,我不会冒险编写我自己的版本)。这至少是一个很好的参考。 (不在java.util alas中)

答案 2 :(得分:-1)

你重新发明了轮子。您可以使用TreeMap<YourClassAsKey, Long>,因为TreeMap由红色黑色BST支持,并使用Long值作为计数器。

来自其javadoc:

  

基于Red-Black树的NavigableMap实现。

答案 3 :(得分:-1)

是的,有一个TreeMap

  

基于红黑树的NavigableMap实现。地图根据其键的自然顺序进行排序,或者根据使用的构造函数在地图创建时提供的比较器进行排序。

     

此实现为containsKey,get,put和remove操作提供了有保证的log(n)时间成本。算法是Cormen,Leiserson和Rivest的算法导论中的算法的改编。


如果给定一个等级,该类也有好处,该类具有在树中返回该等级的对象的函数。

NavigableMap接口(由TreeMap实现)提供floorKeyceilingKey等方法。