edubun
Deutsch

Binäre Suchbäume

Ein ausgeglichener binärer Suchbaum mit 1023 Schlüsseln findet jeden davon mit höchstens 10 Vergleichen; aus sortierter Eingabe gebaut, können dieselben Schlüssel 1023 brauchen.

Binäre Suche, in die Form eingebaut

Die binäre Suche in einem sortierten Array findet einen Schlüssel mit etwa log₂ n Prüfungen, aber Einfügen in ein sortiertes Array verschiebt Werte. Eine Hashtabelle fügt schnell ein, vergisst aber die Ordnung: Sie kann dir nicht einfach den kleinsten Schlüssel nennen oder den nächsten nach 40. Ein binärer Suchbaum (BST) will beides. Er besteht aus Knoten wie eine verkettete Liste, aber jeder Knoten hat zwei Zeiger, left und right. Der oberste Knoten ist die Wurzel, ein Knoten ohne Kinder ist ein Blatt.

Eine Regel macht ihn zum Suchbaum: Für jeden Knoten sind alle Schlüssel in seinem linken Teilbaum kleiner und alle Schlüssel in seinem rechten Teilbaum größer. Um einen Schlüssel zu suchen, beginnst du an der Wurzel und vergleichst. Gleich heißt gefunden. Kleiner heißt nach links, größer heißt nach rechts. Jeder Vergleich verwirft einen ganzen Teilbaum, so wie die binäre Suche die halbe Liste verwirft. Die Suche nach 60 im Baum 50, 30, 70, 20, 40, 60, 80 vergleicht mit 50, dann 70, dann 60: 3 Vergleiche.

Einfügen folgt demselben Weg. Geh nach links oder rechts, bis der Zeiger, den du brauchst, leer ist, und häng den neuen Knoten dort an. Einfügen von 45 vergleicht mit 50 (nach links), 30 (nach rechts) und 40 (nach rechts), und 40 hat kein rechtes Kind, also wird 45 dieses Kind. Einen Knoten zu löschen, der kein Blatt ist, braucht eine weitere Idee: Die MIT-Unterlagen tauschen sein Element mit dem nächsten oder vorherigen Schlüssel in der Reihenfolge und löschen stattdessen dort. Die Zählregel im Labor ist ein Vergleich pro Knoten auf dem Weg.

Wird geladen

Zum Drehen ziehen. Zum Zoomen scrollen oder mit zwei Fingern ziehen.

Ein binärer Suchbaum. Wähl einen Schlüssel und füge ein oder suche; der Weg leuchtet auf, und der Zähler zeigt die Vergleiche. Stell den Startbaum auf „sortierte Eingabe“, um zu sehen, wie dieselben sieben Schlüssel eine lange Kette bilden.

Auf die Höhe kommt es an

Wie viele Vergleiche kann eine Suche brauchen? Höchstens einen pro Ebene, die Kosten hängen also von der Höhe des Baums ab, der Zahl der Kanten auf dem längsten Weg von der Wurzel hinunter zu einem Blatt. Die MIT-Unterlagen sagen es so: Baumoperationen laufen in O(h) Zeit. Der Baum 50, 30, 70, 20, 40, 60, 80 hat die Höhe 2, also braucht keine Suche mehr als 3 Vergleiche. Ein perfekt ausgeglichener Baum mit 1023 Knoten hat die Höhe 9 und braucht höchstens 10.

Die Form hängt aber von der Einfügereihenfolge ab. Füg 10, 20, 30, 40, 50, 60, 70 sortiert ein, und jeder Schlüssel ist größer als alles davor, also kommt jeder neue Knoten rechts an den letzten. Der Baum wird eine Kette der Höhe 6, und die Suche nach 70 braucht 7 Vergleiche: eine verkettete Liste mit zusätzlichen Zeigern. Bei 1023 sortierten Schlüsseln braucht die schlechteste Suche 1023 Vergleiche statt 10.

Ausgeglichene Bäume lösen das, indem sie sich nach jedem Einfügen oder Löschen umformen. Das erste Verfahren war der AVL-Baum von Georgi Adelson-Velski und Jewgeni Landis aus dem Jahr 1962, den die Vorlesung 7 von MIT behandelt. Er hält an jedem Knoten die Höhen der beiden Teilbäume höchstens 1 auseinander und repariert jede Verletzung mit kleinen lokalen Umbauten, den Rotationen. So bleibt die Höhe O(log n), und Suchen, Einfügen und Löschen bleiben O(log n), egal in welcher Reihenfolge die Schlüssel kommen.

Schlüssel in Reihenfolge, ganz umsonst

Ein BST weiß mehr als nur, was enthalten ist. Besuch rekursiv den linken Teilbaum, dann den Knoten, dann den rechten Teilbaum, und die Schlüssel kommen sortiert heraus. Dieser In-Order-Durchlauf (MIT nennt es traversal order) ist die Art, wie ein BST „kleinster Schlüssel“, „größter Schlüssel“ und „nächster Schlüssel nach 40“ beantwortet, die Ordnungsoperationen der Set-Schnittstelle von MIT, die eine Hashtabelle nicht schnell kann.

Wurzel und BlattDie Wurzel ist der oberste Knoten; ein Blatt hat keine Kinder.
BST-EigenschaftAn jedem Knoten: Schlüssel im linken Teilbaum sind kleiner, im rechten größer.
HöheKanten auf dem längsten Weg von der Wurzel zu einem Blatt. Eine Suche braucht höchstens Höhe + 1 Vergleiche.
AVL-BaumEin ausgeglichener BST (1962): Teilbaumhöhen unterscheiden sich höchstens um 1, repariert durch Rotationen.
In-Order-DurchlaufLinks, Knoten, rechts: listet die Schlüssel sortiert auf.
  1. Welche Aussage ist die Eigenschaft eines binären Suchbaums?
    • Jeder Knoten hat genau zwei Kinder
    • An jedem Knoten sind Schlüssel im linken Teilbaum kleiner und im rechten Teilbaum größer
    • Schlüssel werden in Einfügereihenfolge gespeichert
    • Die Wurzel ist der kleinste Schlüssel
  2. Baum aus 50, 30, 70, 20, 40, 60, 80. Wie viele Vergleiche braucht die Suche nach 60?
  3. Derselbe Baum: Wie viele Vergleiche braucht die Suche nach 45, das fehlt?
  4. Füg 45 in diesen Baum ein. Wo landet es?
    • Linkes Kind von 50
    • Rechtes Kind von 40
    • Linkes Kind von 60
    • Rechtes Kind von 30
  5. Welche Höhe hat der Baum 50, 30, 70, 20, 40, 60, 80?
  6. Füg 10, 20, 30, 40, 50, 60, 70 in dieser Reihenfolge ein. Wie viele Vergleiche braucht die Suche nach 70?
  7. Ein perfekt ausgeglichener BST hat 1023 Knoten (Höhe 9). Wie viele Vergleiche kann eine Suche höchstens brauchen?
  8. Bring die Schlüssel des Baums 50, 30, 70, 20, 40 in die Reihenfolge, in der ein In-Order-Durchlauf sie besucht.
  9. Wer schlug das erste Verfahren für ausgeglichene Bäume vor, und wann?
    • Adelson-Velski und Landis, 1962
    • Luhn, 1953
    • Bauer und Samelson, 1957
    • Knuth, 1998
  10. Welche Frage kann ein BST schnell beantworten, eine einfache Hashtabelle aber nicht?
    • Ist 40 gespeichert?
    • Was ist der nächste Schlüssel nach 40?
    • Wie viele Buckets gibt es?
    • Wie viel ist 40 mod 7?
Das Wichtigste
  • In einem BST gehen an jedem Knoten kleinere Schlüssel nach links und größere nach rechts.
  • Suchen und Einfügen folgen einem einzigen Weg: höchstens Höhe + 1 Vergleiche.
  • Sortierte Eingabe ergibt eine Kette (7 Schlüssel, Höhe 6); ausgeglichene Bäume wie AVL (1962) halten die Höhe bei O(log n).
  • Ein In-Order-Durchlauf listet die Schlüssel sortiert auf.
Quellen zu diesem Kurs (11)
  • MIT OpenCourseWare 6.006 Introduction to Algorithms, Spring 2020 (Demaine, Ku, Solomon)
  • lecture notes 2 Data Structures (interface vs data structure, Sequence and Set interfaces, stack = insert_last/delete_last, queue = insert_last/delete_first, array, linked list, dynamic array, amortized Θ(1) append)
  • 4 Hashing (chaining, pigeonhole collisions, chain length n/m)
  • 6 Binary Trees Part 1 (height, traversal order, O(h) operations) and 7 Binary Trees Part 2: AVL (Adelson-Velsky and Landis, 1962) at ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/pages/lecture-notes
  • MDN Web Docs, Array.prototype.shift (shifts all values left by 1)
  • Array.prototype.unshift, Map (insertion order, Map vs Object, spec requires sublinear average access) and Set (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)
  • ECMAScript 2025 Language Specification (tc39.es/ecma262)
  • 24.1 Map Objects and 24.2 Set Objects ("must be implemented using either hash tables or other mechanisms that, on average, provide access times that are sublinear on the number of elements")
  • Array.prototype.shift steps (Repeat, while k < len: move element k to k - 1)
  • D. E. Knuth, The Art of Computer Programming vol. 3 (2nd ed. 1998) section 6.4 History (H. P. Luhn, IBM internal memorandum January 1953, hashing with chaining; digit pairs added mod 10, 31415926 -> 4548) via gwern.net copy, and IEEE Spectrum, "Hans Peter Luhn and the Birth of the Hashing Algorithm" (2018)
  • "A brief history of the stack", SIGCIS (sigcis.org/files/A brief history.pdf: Bauer and Samelson applied for the patent in 1957, US 3,047,228 granted July 31, 1962; IPL list processing by Newell, Simon and Shaw at RAND 1956) and Wikipedia, Information Processing Language (Newell, Shaw, Simon, RAND and Carnegie Institute of Technology, about 1956).

Abgerufen: 2026-10-18