Gibt es eine formale Definition für die durchschnittliche Höhe eines Binärbaums?
Ich habe eine Tutorial-Frage zum Ermitteln der durchschnittlichen Höhe eines Binärbaums mithilfe der folgenden zwei Methoden:
Die natürliche Lösung könnte darin bestehen, die durchschnittliche Länge aller möglichen Pfade von der Wurzel zu einem Blatt zu nehmen
.
Eine andere Möglichkeit besteht darin, es rekursiv zu definieren, dh die durchschnittliche Höhe eines Knotens ist der Durchschnitt über die durchschnittlichen Höhen der Teilbäume plus eins
mit für Blätter und für leere Slots.
Nach meinem derzeitigen Verständnis zum Beispiel die durchschnittliche Höhe des Baumes
1
/ \
2 3
/
4
ist nach der zweiten Methode, die Rekursion verwendet.
Ich verstehe jedoch immer noch nicht ganz, wie ich den ersten machen soll. ist nicht korrekt.
Antworten:
Es gibt keinen Grund zu der Annahme, dass beide Definitionen dasselbe Maß beschreiben. Sie können rekursiv schreiben :avh1
mit für Blätter . Wenn Sie nicht glauben, dass dies dasselbe ist, entfalten Sie die Definition von auf der rechten Seite oder führen Sie einen Induktionsnachweis durch.avh1(l)=0 l avh1
Jetzt sehen wir, dass ganz anders funktioniert als . Während die rekursive Höhen von einem Knoten Kinder wiegt gleich (Hinzufügen und Division durch zwei), wiegt sie gemäß der Anzahl der Blätter die sie enthalten. Sie sind also die gleichen (Modulo der Anker) für Bäume mit Blattausgleich, dh in dem Sinne, dass Geschwisterbäume gleich viele Blätter haben. Wenn Sie die rekursive Form von mit vereinfachen, ist dies sofort ersichtlich. Bei unausgeglichenen Bäumen sind sie jedoch unterschiedlich.avh 2 avh 2 avh 1 avh 1 lv ( l ) = lv ( r )avh1 avh2 avh2 avh1 avh1 lv(l)=lv(r)
Ihre Berechnungen sind in der Tat korrekt (gemäß Ihrer Definition); Beachten Sie, dass der Beispielbaum nicht blattausgeglichen ist.
quelle
Bearbeiten: Jeffe macht einen guten Punkt in seinem Kommentar oben. Sie sollten in der folgenden Antwort wahrscheinlich "richtig gegen falsch" als "bequem / konsistent gegen inkonsistent" lesen.
Es scheint, dass Ihre zweite Berechnung falsch ist. Die Höhe eines Teilbaums mit einem einzelnen Knoten (dh einem Blatt) sei 0. Dann ist die Höhe der Teilbaumwurzel bei:
Ich denke, Sie machen die erste Berechnung richtig und 1.5 ist die richtige Antwort.
quelle