我读到了一个关于TreeSet时间复杂度的先前问题,答案是它需要O(n)的时间。然而,我不明白为什么迭代的时间复杂度是O(n),而不是O(n*nlogn)。
每次next调用需要O(logn)的时间
因此,如果我像这样遍历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),不是吗? - Jose Luis