Binäre Bäume Suchbäume Binäre Bäume gestatten die Speicherung von Daten, die später effizient gesucht werden können (z.B. Kundennummern). Suchbaum 81 95 23 10 6 56 41 93 99 82 Ein binärer Baum heißt Suchbaum, wenn für jeden Knoten K, der kein Blatt ist, gilt: •Alle Knotenwerte (Schlüssel) des linken Teilbaums von K sind kleiner als der Wert von K •Alle Knotenwerte des rechten Teilbaums von K sind größer als der Wert von K. Suchbäume sind in der Regel nicht vollständig ausgeglichen, da sie im Betrieb wachsen oder schrumpfen können. Vollständig ausgeglichene Suchbäume bieten den Vorteil, dass die Suche im Mittel effizienter ist. Dies wird durch den Nachteil erkauft, dass sie (bei Bedarf) neu aufgebaut werden müssen. Wir verzichten hier auf die Forderung der vollständigen Ausgeglichenheit. Erzeugen eines binären Suchbaums durch Einfügen von Knoten Wir gehen von einem leeren Suchbaum aus und fügen sukzessive Knoten ein: Beim Einfügen suchen wir nach der einzufügenden Stelle und hängen dort einen neuen Knoten ein. Die Suche muss bis zur untersten Stufe (Ebene) des Baums ausgeführt werden! Warum? © Wagner, 27. Apr. 2011 Seite 15 Binäre Bäume Beispiel: Schrittweises Einhängen der Knotenwerte 8, 2, 4, 1, 6, 9, 5 Binärer Suchbaum 10 8 8 9 2 1 4 4 5 1 6 Einfügen von 8, 2, 4, 1, 6, 9, 5 5 7 Wie ist dieser Suchbaum entstanden? 6 Aufgaben a) Füge in einen leeren Suchbaum ein: S E A1 R C H b) Füge hinzu: Z, T, A2. (A1 ist kleiner als A2) Warum befindet sich der zweite Schlüsselwert A2 nicht in direkter Nachbarschaft des ersten Schlüsselwertes A1? Welche Traversierungsart ist zu wählen, damit die Knoten des Suchbaums in sortierter Reihenfolge ausgelesen werden? Zeichne den binären Suchbaum, der entsteht, wenn in einen leeren Baum die Buchstaben des Wortes I1NFORMATI2K (ABER, E1XAMPLE2) eingefügt werden. Wovon hängt die Laufzeit bei der Suche nach einem Knoten ab? Füge in einen leeren Suchbaum die Buchstaben A1SEA2RCHA3TF ein. © Wagner, 27. Apr. 2011 Seite 16 Binäre Bäume Löschen von Knoten Beim Löschen eines Knotens wird ähnlich wie beim Suchen verfahren. Hat man den zu löschenden Knoten gefunden, müssen 3 Fälle unterschieden werden: der Knoten besitzt keine Nachfolger der Knoten besitzt entweder einen linken oder einen rechten Nachfolger der Knoten besitzt einen linken und einen rechten Nachfolger Fall 1 Der zu löschende Knoten hat keine Nachfolger, er ist ein Blatt: z.B. A3, F oder T Binärer Suchbaum, Fall 1 A1 S T E A2 R C A3 H F Lösung: Trenne den Knoten ab. © Wagner, 27. Apr. 2011 Seite 17 Binäre Bäume Fall 2 Der zu löschende Knoten besitzt entweder einen linken oder einen rechten Nachfolger. • Falls der linke Teilbaum leer ist, wird der rechte Nachfolger (Sohn) zum Nachfolger des Vaterknotens • Falls der rechte Teilbaum leer ist, wird der linke Nachfolger zum Nachfolger des Vaterknotens Beispiel: Knoten A2 löschen Binärer Suchbaum, Fall 2 A1 A1 S S Vater T E Sohn A2 T E R R C C H H A3 A3 F F Verkette den Vaterknoten (E) mit dem Sohn (C) von A2 (rot). © Wagner, 27. Apr. 2011 Seite 18 Binäre Bäume Fall 3 Der zu löschende Knoten mit der Referenz 'zeiger' besitzt zwei nichtleere Teilbäume. Suche den kleinsten Nachfolger leftmost im rechten Teilbaum (oder den größten Nachfolger im linken Teilbaum). Warum? Ersetze Knoteninhalt 'zeiger' durch leftmost und lösche leftmost aus der ursprünglichen Position. Binärer Suchbaum, Fall 3 A1 A1 S S zeiger T E A2 A3 A2 R C F leftmost H T F R C A3 Aufgabe: Lösche im obigen Baum den Wurzelknoten A1. © Wagner, 27. Apr. 2011 Seite 19 H Binäre Bäume Aufwand beim Suchen Wie misst man den Aufwand? Definition Aufwand (= Schrittzahl) ist die Zahl der Vergleiche, die bei der Suche erforderlich sind. Wir betrachten den schlechtesten Fall: Der Aufwand S ist gleich der Weglänge +1 von der Wurzel bis zum tiefsten Blatt. S = h +1 (Höhe des Baums + 1) Fall 1: Entarteter Baum S(n) = n Fall 2: Vollständiger Baum: Knotenzahl n <= 2h+1 – 1 log2(n + 1) <= h + 1 Näherungsweise gilt: h + 1 ≈ log2(n) Daraus folgt S(n) ≈ log2(n) Was bedeutet dies, wenn die Knotenzahl im Baum doppelt so groß ist? S(2•n) = …. Antwort: Bei Verdopplung der Knotenzahl wächst der Suchaufwand um ….. © Wagner, 27. Apr. 2011 Seite 20