Das finden der minimalen und maximalen Höhe in einem AVL-Baum, da eine Anzahl von Knoten?
Gibt es eine Formel, um zu berechnen, was die maximale und minimale Höhe für ein AVL-Baum, gegeben eine bestimmte Anzahl von Knoten?
Zum Beispiel:
Lehrbuch der Frage:
Was ist die maximale/minimale Höhe für ein AVL-Baum aus 3 Knoten 5 Knoten 7 Knoten?
Lehrbuch beantworten:
Die maximale/minimale Höhe für ein AVL-Baum aus 3 Knoten 2/2, 5 Knoten ist 3/3, 7 Knoten 4/3
Ich weiß nicht, ob Sie dachte, es einige Magische Formel, oder, wenn Sie ziehen Sie den AVL-Baum für jede der angegebenen Höhen-und bestimmt es so.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung unten ist geeignet für arbeiten, die Dinge von hand und gewinnt eine intuition, finden Sie die genauen Formeln an der Unterseite dieser Antwort-für größere Bäume (54+ Knoten).
Sowie die minimale Höhe einfach: füllen Sie jede Ebene im Baum mit den Knoten, bis Sie laufen aus. Diese Höhe ist das minimum.
Finden das maximum, das gleiche zu tun wie für das minimum, aber dann wieder einen Schritt zurück gehen (entfernen des letzten Platzierten Knoten) und sehen, wenn Sie hinzufügen, dass die Knoten an der gegenüberliegenden sub-Baum (von wo er gerade war) verletzt die AVL-Baum-Eigenschaft. Wenn Sie es tut, Ihre maximale Höhe ist einfach eine min-height. Ansonsten ist diese neue Höhe ein (die sollte min Höhe+1) ist Ihre maximale Höhe.
Wenn Sie brauchen eine übersicht, welche Eigenschaften ein AVL-Baum, oder einfach nur eine Allgemeine Erklärung von einem AVL-Baum, Wikipedia ist ein großartiger Ort zu starten.
Beispiel:
Nehmen wir die 7-Knoten-Beispiel Fall. Sie füllen Sie alle Ebenen und finden Sie einen vollständig ausgefüllten Baum der Höhe 3. (1 bei level 1, 2 auf Ebene 2, 4 auf Ebene 3. 1+2+4=7 Knoten.) Das bedeutet, dass 3 Ihre minimale.
Nun die max. Entfernen letzten Knoten und legen Sie es auf der linken Teilbaum, anstatt das Recht. Der Rechte Teilbaum noch hat die Höhe 3, aber der linke Teilbaum nun hat die Höhe 4. Allerdings sind diese Werte unterscheiden sich um weniger als 2, so ist es immer noch ein AVL-Baum. Deshalb ist Ihre maximale Höhe ist 4. (Das ist min+1)
Alle drei Beispiele erarbeitet unten (beachten Sie, dass die Nummern entsprechen der Reihenfolge der Platzierung, NICHT Wert):
Formeln1:
Die Technik, die oben gezeigt wird, nicht zu halten, wenn Sie einen Baum mit einer sehr großen Anzahl von Knoten. In diesem Fall kann man die folgenden Formeln zum berechnen der genauen min/max.
Gegeben n Knoten2:
Minimum: ceil(log2(n+1))
Maximum: Boden(1.44*log2(n+2)-.328)
Wenn du neugierig bist, das erste mal max-min - >1 ist, wenn n=54.
1Dank Jamie S, dass diese Fehler bei größeren Knoten zählt, um meine Aufmerksamkeit.
2Diese Formeln sind von der Wikipedia AVL-Seite, mit Konstanten angeschlossen. Die ursprüngliche Quelle ist Sortieren und suchen von Donald E. Knuth (2. Auflage).
Es ist wichtig zu beachten, dass die folgenden definierenden Eigenschaften eines AVL-Baums.
AVL-Baum-Eigenschaft
Theorem: Die AVL-Eigenschaft ist ausreichend, um ein worst-case-Baum der Höhe von O(log N).
Beachten Sie das folgende Diagramm.
- T1 aus T0 + 1 Knoten, für einen Höhe von 1.
- T2 aus T1 und T0 + 1 Knoten, was eine Höhe von 2.
- T3 besteht aus einem T2 für den linken Teilbaum und einen T1 für den rechten
sub-Baum + 1 Knoten, für einen Höhe von 3.
- T4 besteht aus einem T3 für den linken Teilbaum und ein T2 für den rechten
sub-Baum + 1 Knoten, für einen Höhe von 4.
Wenn Sie die Decke O(log N), wobei N für die Anzahl der Knoten in einem AVL-Baum, erhalten Sie die Höhe.
Finden Sie das Muster der Entwicklung hier??
**Die worst-case-Höhe ist
Vermuten lässt die Anzahl der Knoten ist n
Versucht herauszufinden, die mindestens die Höhe eines AVL-Baums die gleiche wäre wie der Versuch, um den Baum komplett d.h. füllen Sie möglichst alle Knoten auf jeder Ebene, und dann bewegen Sie auf die nächste Ebene.
Also auf jeder Ebene die Anzahl der geeigneten Knoten erhöht durch 2^(h-1) wobei h die Höhe des Baumes.
also nur das kleinste h, für welche Knoten(h) ist größer als die angegebene Anzahl der Knoten n.
Nun für das problem der maximalen Höhe eines AVL-Baums:-
können davon ausgehen, dass die AVL-Baum der Höhe h, F(h) die Anzahl der Knoten im AVL-Baum,
für seine Höhe maximal können davon ausgehen, dass der linke Teilbaum FL und rechten Teilbaum FR eine Differenz in Höhe von 1(wie es erfüllt die AVL-Eigenschaft).
Nun vorausgesetzt, FL ist ein Baum mit Höhe h-1 und FR ein Baum mit Höhe h-2.
nun die Anzahl der Knoten in
Hinzufügen von 1 auf beiden Seiten :
Damit reduzieren wir die maximale Höhe problem auf eine
Fibonacci sequence
. Und diese Bäume F(h) aufgerufen werden Fibonacci-Bäume.Also F(1)=1 und F(2)=2
so, in Reihenfolge zu erhalten, die maximale Höhe finden Sie einfach den index, der die Zahl in der fibonacci-Folge, die kleiner oder gleich n.
So anwenden (Eq-1)
F(3)= F(2) + F(1)+ 1=4, also, wenn n zwischen 2 und 4 Baum haben Höhe 3.
F(4)= F(3)+ F(2)+ 1 = 7, wenn n zwischen 4 und 7 Baum Höhe 4.
und so weiter.
http://lcm.csa.iisc.ernet.in/dsa/node112.html
Es ist etwa 1.44 * log n, wobei n die Anzahl der Knoten.
Für eine detaillierte Beschreibung, wie das abgeleitet wurde. Sie können unter diesem link ab der Mitte von Seite 13: http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci335/lecture_notes/chapter04.2.pdf