Ich las eine previous question über die Zeit Komplexität für TreeSet und die Antwort war, dass es O (n) Zeit dauert. Ich verstehe jedoch nicht, warum O (n) anstelle von O (n * nlogn) iteriert wird.Warum ist TreeSet Iteration O (n) anstelle von O (n * logn)?
Jeder nächsten Anruf nimmt O(logn) time
Also, wenn ich durch eine TreeSet wie folgt durchlaufen:
while (iterator.hasNext()){ //Runs N times
System.out.println(iterator.next() + " "); //each next is O(logn)
}
Ich würde erwarten, denn es O (n * log n) und nicht O (n) sein, weil Die while-Schleife hat N Iterationen und jeder iterator.next() -Aufruf benötigt O (logn) -Zeit.
Warum 'iterator.next()' ist O (log n). Es muss nur zum nächsten Knoten gehen, das ist O (1), oder? –
@JoseLuis ist nicht genau, basierend auf dem Quellcode. –
@ louis-wasserman Du hast Recht, es tut mir sehr leid. Ich dachte, dass iterator() eine Liste mit den sortierten Knoten zurückgeben könnte, und dann zum nächsten Knoten zu gehen ist einfach. –