Da die Höhe eines AVL-Baums O(log n) ist, ist die zeitliche Komplexität der Suche, Einfügung und delete-Methoden in AVLTree ist O(log n). Die zeitliche Komplexität der Methoden search, insert und delete in AVLTree hängt von der Höhe des Baums ab. Wir können beweisen, dass die Höhe des Baums O(log n) beträgt.
G(h) bezeichne die minimale Anzahl der Knoten in einem AVL-Baum mit der Höhe h. Offensichtlich ist G(1) 1 und G(2) 2. Die minimale Anzahl von Knoten in einem AVL-Baum mit der Höhe h >= 3 muss zwei minimale Teilbäume haben: einen mit der Höhe h - 1 und den anderen mit der Höhe h - 2. Also
G(h) = G(h - 1) + G(h - 2) + 1
Denken Sie daran, dass eine Fibonacci-Zahl am Index i mithilfe der Wiederholungsbeziehung F(i) = F(i - 1) + F(i - 2) beschrieben werden kann. Daher ist die Funktion G(h) im Wesentlichen dieselbe wie F(i). Das lässt sich beweisen
h < 1,4405 log(n + 2) - 1,3277
wobei n die Anzahl der Knoten im Baum ist. Daher beträgt die Höhe eines AVL-Baums O(log n).
Die Methoden Suchen, Einfügen und Löschen beziehen sich nur auf die Knoten entlang eines Pfads im Baum. Die Methoden updateHeight und balanceFactor werden in einer konstanten Zeit für jeden Knoten im Pfad ausgeführt. Die Methode balancePath wird in einer konstanten Zeit für einen Knoten im Pfad ausgeführt. Somit beträgt die Zeitkomplexität für die Methoden search, insert und delete O(log n).
Das obige ist der detaillierte Inhalt vonAVL-Baum-Zeitkomplexitätsanalyse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!