Ich habe eine theoretische Frage über Balanced BST
.Perfect Balanced Binary Search Tree
Ich möchte Perfect Balanced Tree
erstellen, die 2^k - 1
Knoten hat, von einem normalen unbalanced BST
. Die einfachste Lösung, die ich mir vorstellen kann, besteht darin, eine sortierte Array/Linked list
zu verwenden und das Array rekursiv in Sub-Arrays zu unterteilen und daraus Perfect Balanced BST
aufzubauen.
Allerdings muss ich in einem Fall von extrem großen Baumgrößen ein Array/List
in der gleichen Größe erstellen, so dass diese Methode eine große Menge an Speicher verbrauchen wird.
Eine weitere Option ist die Verwendung von AVL
Rotationsfunktionen, Einfügen Element für Element und Balancieren des Baumes mit Rotationen, abhängig vom Tree Balance Factor - drei Höhe der linken und rechten Teilbäume.
Meine Fragen sind, habe ich Recht mit meinen Annahmen? Gibt es eine andere Möglichkeit, eine perfekte BST
aus dem unsymmetrischen BST
zu erstellen?
Einige Rotationsfunktionen sind sehr sinnvoll, wenn Sie einen großen Baum haben und den Baum transformieren möchten, ohne die bestehende Struktur zu verändern. - Muss das Ergebnis wirklich perfekt ausbalanciert sein? Was ist der Hintergrund der Frage? – michas
Ja, es muss perfekt ausbalanciert sein. Es ist Teil eines akademischen Projekts. Was meinst du mit "einigen Rotationsfunktionen"? Soweit ich weiß, gibt es vier Rotationsfunktionen, die ziemlich einfach zu implementieren sind. – OlejkaKL
Verschiedene Arten von Bäumen verwenden leicht unterschiedliche Arten zu rotieren. Zum Beispiel vergleichen AVL und Rot-Schwarz-Bäume. – michas