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/

10-11 02:38