here指出
TreeSet对add()/ remove()/ contains()具有log(n)时间复杂度保证。
但是TreeSet
使用二进制搜索树,在最坏的情况下,二进制搜索树的高度可以为O(n)。如何保证“ log(n)”复杂度?
最佳答案
实现在插入时重新平衡树。insert
的O(lg n)时间由official documentation保证。这不足为奇:实现集的经典方法是某种self-balancing binary search tree。
Java库是公开可用的,所以让我们自己看看。可以找到TreeSet
,例如here。它是根据TreeMap
实施的,而又是here。正如@Don Roby指出的那样,底层的数据结构是一棵红黑树。
关于java - TreeSet最坏情况下的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22596877/