我想将Java TreeSet扩展为Order-Statistics Tree。因此,我的想法是,我将子树大小存储在每个节点中,并操纵add()
和remove()
方法s.t.子树大小也会更新。
我知道有一些数据结构(也在Java中)已经实现了这一点,但我的问题是,是否有可能以某种方式扩展TreeSet类,只要我修改了这个属性就会存储和更新数据结构。
答案 0 :(得分:0)
如果查看source code,则TreeSet
有
private transient NavigableMap<E,Object> m;
您肯定能够实施add
,addAll
,remove
等等,但TreeSet
的方法通常只调用基础地图,即{{ 1}},因此您的实现无法访问。看起来好像是Order-Statistic-Tree can have a different order than a normal TreeMap,这似乎无法通过扩展TreeSet来实现。
您应该能够在TreeMap上建立数据结构,据称TreeSet基于该provides guaranteed log(n) time cost for the containsKey, get, put and remove operations。它