【问题标题】:What's the worst-case time complexity of TreeSet?TreeSet 的最坏情况时间复杂度是多少?
【发布时间】:2014-03-31 22:38:06
【问题描述】:

据说here

TreeSet 为 add()/remove()/contains() 提供 log(n) 时间复杂度保证。

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

【问题讨论】:

  • “如果树倾斜”是什么意思?
  • 它基于红黑树,所以它是自平衡的。

标签: java hashmap time-complexity


【解决方案1】:

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

insert 的 O(lg n) 时间界限由 official documentation 保证。这应该不足为奇:实现集合的经典方法是某种self-balancing binary search tree

Java 库是公开可用的,所以让我们自己去看看。可以找到TreeSet,例如here。它是根据TreeMap 实现的,而here 又是here。正如@Don Roby 指出的那样,底层数据结构是红黑树。

【讨论】:

  • +1:我相信确实是使用红黑树完成的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多