Warum ist die Mindesthöhe eines Binärbaums ?


10

In meiner Java-Klasse lernen wir die Komplexität verschiedener Arten von Sammlungen kennen.

Bald werden wir über binäre Bäume sprechen, über die ich gelesen habe. Das Buch gibt an, dass die Mindesthöhe eines Binärbaums beträgt , bietet jedoch keine weitere Erklärung.log2(n+1)1

Kann jemand erklären warum?


Antworten:


11

Ein Binärbaum hat 1 oder 2 Kinder an Nicht-Blattknoten und 0 Knoten an Blattknoten. Es gebe Knoten in einem Baum, und wir müssen sie so anordnen, dass sie immer noch einen gültigen Binärbaum bilden.n

Ohne zu beweisen, sage ich, dass zur Maximierung der Höhe gegebene Knoten linear angeordnet sein sollten, dh jeder Nicht-Blatt-Knoten sollte nur ein Kind haben:

                              O 1
                              |
                              O 2
                              |
                              O 3
                              |
                              O 4
                              |
                              O 5
                              |
                              O 6
                              |
                              O 7
                              |
                              O 8

Hier ist die Formel zur Berechnung des Höhenverhältnisses in Bezug auf die Anzahl der Knoten einfach. Wenn die Höhe des Baumes ist, dann ist .h = n - 1hh=n1

Wenn wir nun versuchen, einen Binärbaum aus Knoten mit minimaler Höhe zu erstellen (immer auf einen vollständigen Binärbaum reduzierbar), müssen wir so viele Knoten wie möglich in die oberen Ebenen packen, bevor wir zur nächsten Ebene übergehen. Der Baum hat also die Form eines folgenden Baums:n

                              O
                              |1
                              |
                       O------+-----O
                       |2           |3
                       |            |
                   O---+---O    O---+----O
                   |4      |5    6        7
                   |       |
               O---+--O    O
                8      9    10

Beginnen wir mit einem bestimmten Fall, .n=2m1

Wir wissen, dass

20+21+22+...+2m1=2m1

Es ist auch leicht zu beweisen, dass ein Level höchstens Knoten enthalten kann.2 ii2i

Unter Verwendung dieses Ergebnisses in der obigen Summe stellen wir fest, dass für jede Ebene von bis ein entsprechender Term in der Erweiterung von . Dies impliziert, dass ein vollständiger Binärbaum Knoten vollständig gefüllt ist und die Höhe , wobei Höhe eines vollständigen Binärbaums mit Knoten ist.i0m2i12m12m1h(2m1)=m1h(n)=n

Unter Verwendung dieses Ergebnisses ist , da der Baum mit Knoten vollständig gefüllt ist und somit ein Baum mit Knoten den zusätzlichen Knoten aufnehmen muss in der nächsten Ebene , Erhöhung der Höhe um 1 von auf .h(2m)=m2m1(2m1)+1=2mmm1m

Bisher haben wir bewiesen, dass sowie

h(2m)=m,
h(2m+1)=m+1
h(2m+11)=m

Somit istnZ,2mn<2m+1

mh(n)<m+1

Wenn Sie jedoch log (Basis 2) auf beiden Seiten nehmen, ist

mlog2(n)<m+1
m=log2(n)

Somit istn,n[2m,2m+1)

h(n)=m=log2(n)

Und wir können dieses Ergebnis mit Induktion verallgemeinern .nZ

PS: Das Buch, in dem die Höhe eines vollständigen Binärbaums als ist nicht für alle gültig, da für die meisten Ganzzahlen nicht ganzzahlige Werte liefern würde (dh für alle außer perfekt binäre Bäume), aber die Höhe eines Baumes ist rein ganzzahlig.n log 2 ( n ) nlog2(n+1)1nlog2(n)n


18

Ich gehe davon aus, dass Sie mit die Gesamtzahl der Knoten im Binärbaum meinen. Die Höhe (oder Tiefe) eines Binärbaums ist die Länge des Pfades vom Wurzelknoten (dem Knoten ohne Eltern) zum tiefsten Blattknoten. Um diese Höhe auf ein Minimum zu beschränken, ist der Baum am vollständigsten (mit Ausnahme der letzten Ebene). Wenn eine bestimmte Ebene Knoten mit untergeordneten Elementen enthält, müssen alle Knoten auf der übergeordneten Ebene zwei untergeordnete Elemente haben.n

Ein vollständig gesättigter Binärbaum mit Ebenen hat also Knoten und eine Tiefe von . Wenn wir also die Tiefe eines Binärbaums haben, können wir sehr leicht die maximale Anzahl von Knoten finden (was auftritt, wenn der Baum vollständig gesättigt ist). Wenn Sie sich an Ihre Algebra-Klassen erinnern, handelt es sich nur um eine geometrische Reihe, die folgendermaßen dargestellt werden kann:41+12+122+12223

nodes=1+2+22+23+...+2depth=k=0depth2k=12depth+112.

Ordnen wir also neu an: und lösen Sie dann nach der Tiefe: und da ist deine Formel. Denken Sie jetzt daran, dass dies nur dann ganzzahlige Werte liefert, wenn jeder Baum vollständig ausgefüllt ist (ein 'perfekter' Binärbaum). Wenn Sie also einen nicht ganzzahligen Wert erhalten, denken Sie daran, aufzurunden.

nodes=2depth+11,
nodes+1=2depth+1log2(nodes+1)=log2(2depth+1)=depth+1log2(nodes+1)1=depth.

4

Um die Höhe minimal zu halten, ist es leicht zu erkennen, dass wir alle Ebenen außer möglicherweise der letzten füllen müssen. Warum? Andernfalls könnten wir einfach die Knoten der letzten Ebene in leere Slots in den oberen Ebenen verschieben.

Stellen Sie sich nun vor, ich habe eine nicht spezifizierte Anzahl von Bohnen und gebe Ihnen jeweils eine Bohne und bitte Sie, einen Binärbaum mit möglichst geringer Höhe zu erstellen. Ich könnte keine Bohnen mehr haben, wenn Sie entweder das letzte Level vollständig ausgefüllt haben oder mindestens eine Bohne im letzten Level haben. Nehmen wir an, Sie haben zu diesem Zeitpunkt Ihre Baumhöhe h .

In beiden Fällen ändert sich h nicht. Das heißt, Sie haben einen vollständigen binären Baum der Höhe h mit meiner Einschränkung. Aber ich habe im letzten Level imaginäre Bohnen angenommen (wenn du das letzte Level nicht füllen könntest). Es ist also tatsächlich Also Minimum Wenden Sie jedoch die Obergrenze an, da wir imaginäre Bohnen hinzufügen und diese nicht löschen.h = lg ( n + 1 ) - 1

20+21+22+23++2h=2h+11n.
h=lg(n+1)1.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.