Lecture 14 Flashcards
(18 cards)
Warum genügt es, locate effizient zu machen?
Wenn locate schnell ist, lassen sich insert & remove darauf aufbauen (Position wird zuerst per locate gesucht).
Definiere einen binären Suchbaum formell (Suchbaum-Regel).
Für jeden inneren Knoten v: alle Schlüssel im linken Teilbaum ≤ key(v) < alle Schlüssel im rechten Teilbaum.
Welche drei Invarianten hält ein externer BST ein?
Schlüssel-, Grad-, Suchbaum-Invariante (einzigartige Schlüssel; Grad ≤ 2; Suchbaum-Eigenschaft).
Unterschied interner vs. externer BST?
Intern: Daten bereits in inneren Knoten. Extern: Innere Knoten dienen nur der Navigation, Daten liegen in Blättern (oft als Liste mit Dummy ∞).
Skizziere den locate-Algorithmus im BST.
Starte an Wurzel; solange innerer Knoten: gehe links, falls key(v) ≥ k, sonst rechts. Im Blatt: liefere Element mit minimalem key ≥ k.
Warum kann h im Worst-Case Θ(n) werden?
Bei sequentiell sortierten Einfügungen degeneriert der Baum zur Liste.
Insert-Schritte im externen BST?
(1) locate(key(e)) bis Blatt e′. (2) Wenn key(e) eindeutig < key(e′): füge e in Blattliste vor e′, erstelle neues Blatt-Paar und Splitter-Knoten.
Remove-Schritte im externen BST?
locate(k) → Blatt e; falls key(e)=k: entferne e aus Liste; lösche Vaterknoten; ersetze ggf. Schlüssel im verbleibenden Kind durch key(v).
Hauptproblem unbalancierter BSTs?
Baumhöhe kann linear werden ⇒ Operationen O(n).
Welche zwei Strategien zur Entartungsvermeidung nennt die Vorlesung?
AVL-Bäume (lockert Balance-Invariante) und (a,b)-Bäume (lockern Grad-Invariante).
Wie lässt sich die maximale Höhe h eines AVL-Baums mit n Elementen abschätzen?
h ≤ ≈ 1.44 log₂ n (genauer: Blattzahl folgt Fibonacci → h ∈ Θ(log n)).
Welches Prinzip lockern (a,b)-Bäume und mit welchem Effekt?
Sie erlauben Knoten-Grade zwischen a und b (b ≥ 2a). Dadurch bleibt Höhe O(logₐ n) bei deutlich weniger Rotationen.
Warum sind (a,b)-Bäume für Festplatten/Cache-sensitives Arbeiten attraktiv?
Hoher Knotengrad ⇒ geringe Höhe ⇒ weniger I/O-Zugriffe; Schlüssel in einem Knoten liegen zusammen im Block.
Warum genügt bei locate die Bedingung key(v) ≥ k → links, statt > k?
Damit locate(=k) das gesuchte Element oder das kleinste größere findet; Gleichheit führt in den linken (kleineren) Teilbaum/Blatt.
Welche Rolle spielt das Dummy-Element ∞ in externen BSTs?
Stellt sicher, dass locate(k) immer ein Blatt liefert (auch wenn k > größter Schlüssel).
Erkläre anschaulich, wie Fibonacci-Zahlen als untere Schranke für AVL-Blätter entstehen.
In ungünstigstem Fall hat nur ein Kind Höhe h–1, das andere h–2 ⇒ #Blätter Fₕ = Fₕ₋₁ + Fₕ₋₂.
Welche Invariante geht bei einer AVL-Single-Rotation (LL/RR) wieder verloren, wenn man nicht sofort die Höhenfelder aktualisiert?
Die AVL-Bedingung des Großelternknotens – daher müssen nach Rotation die gespeicherten Höhen (oder Balance-Faktoren) angepasst werden.
Gib ein Insert-Beispiel, bei dem im externen BST zwei neue Baumknoten entstehen.
Wenn key(e) zwischen zwei Listenelemente fällt: man benötigt ein neues Blatt für e, ein neues Blatt für seinen rechten Nachbarn und einen Splitterknoten darüber.