Java TreeSet类可以为add方法维护O(logN)成本。如果数据按排序顺序输入,该如何工作?
由于给定排序的数据时,二叉搜索树的add方法将退化为O(N),为什么对于TreeSet不会发生这种情况?
TreeSet
实现
基于NavigableSet
。
NavigableSet
的Javadoc说:
A
Red-Black tree基于
TreeMap
实现。此实现为TreeMap
,TreeMap
,TreeMap
和NavigableMap
操作提供了保证的log(n)时间成本。算法是对Cormen,Leiserson和Rivest的算法简介的改编。
因此,如果您想查看特定算法的描述,请找到该书并阅读。您还可以执行一些 查找红黑树的工作方式 树的平衡不是完美的,但是足以保证它在NavigableMap
和containsKey
上显示:get
时间内进行搜索,其中n
put
时间执行。remove
然后将详细介绍所有工作原理。