我讀了一篇關於TreeSet的時間複雜度的previous question,答案是需要O(n)次。但是,我不明白爲什麼它是O(n)迭代而不是O(n * nlogn)。爲什麼TreeSet迭代O(n)而不是O(n * logn)?
每下一次調用需要O(logn) time
所以,如果我通過一個TreeSet重複這樣的:
while (iterator.hasNext()){ //Runs N times
System.out.println(iterator.next() + " "); //each next is O(logn)
}
我希望它是O(N * LOGN),而不是爲O(n),因爲while循環有N次迭代,每個iterator.next()調用需要O(logn)時間。
爲什麼'iterator.next()'是O(log n)。它只需要去下一個節點,這是O(1),不是嗎? –
@JoseLuis不準確,基於查看源代碼。 –
@ louis-wasserman你說得對,我很抱歉。我認爲iterator()可以返回一個帶有排序節點的列表,然後去下一個節點很容易。 –