I am trying to clear up some things regarding complexity in some of the operations of TreeSet. On the javadoc it says:
“This implementation provides
guaranteed log(n) time cost for the
basic operations (add, remove and
contains).”
So far so good. My question is what happens on addAll(), removeAll() etc. Here the javadoc for Set says:
“If the specified collection is also a
set, the addAll operation effectively
modifies this set so that its value is
the union of the two sets.”
Is it just explaining the logical outcome of the operation or is it giving a hint about the complexity? I mean, if the two sets are represented by e.g. red-black trees it would be better to somehow join the trees than to “add” each element of one to the other.
In any case, is there a way to combine two TreeSets into one with O(logn) complexity?
Thank you in advance. 🙂
You could imagine how it would be possible to optimize special cases to
O(log n), but the worst case has got to beO(m log n)wheremandnare the number of elements in each tree.Edit:
http://net.pku.edu.cn/~course/cs101/resource/Intro2Algorithm/book6/chap14.htm
Describes a special case algorithm that can join trees in
O(log(m + n))but note the restriction: all members ofS1must be less than all members ofS2. This is what I meant that there are special optimizations for special cases.