java - TreeSet 最坏情况的时间复杂度是多少?

标签 java hashmap time-complexity

据说here那个

TreeSet has a log(n) time complexity guarantuee for add()/remove()/contains().

但是TreeSet使用二叉搜索树,在最坏的情况下,二叉搜索树的高度可以是O(n)。 log(n) 复杂度如何“保证”?

最佳答案

该实现在插入时重新平衡树。

插入 的 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/

相关文章:

java - System.arraycopy(…) 可以比 O(n) 更快吗?

java - 使用JSP和Jquery上传文件

java - gradle 在集成测试中找不到 lombok 生成的构造函数

c - 对于这两种情况,C 中的最佳数据结构?

java - 具有不同 hashCode 的两个键是否可以成为 Java 中 HashMap 中同一存储桶的一部分?

c++ - tbb并发hashmap实现字典ADT

java - 如何创建圣诞节倒计时

java - 在编译之前使用 Gradle 列出 SourceSet 中的所有 Java 包

algorithm - 嵌套循环的时间复杂度?

c++ - 查找汉明数 - 不是代码或距离