Impressum
< Liste Inhalt

Bäume

Bäume sind in der Informatik hierarchische Datenstrukturen.
Die Elemente in einem Baum heißen Knoten und die Verbindungen nennt man Kanten.
Baum Benennung
Baum mit 8 Knoten und 6 Kanten. Die Kanten sind die roten Linien.

Benennung

Den obersten Knoten in einem Baum nennt man Wurzel.
Eine Kante verbindet genau zwei Knoten, den oberen Knoten nennt man Eltern-Knoten den unteren Kind-Knoten.
Jeder Knoten (außer der Wurzel) hat genau einen Eltern-Knoten.
Einen Knoten ohne Kind-Knoten nennt man Blatt.
Ein Knoten hat die Tiefe n wenn er n Kanten von der Wurzel entfernt ist.
Die Wurzel hätte also die Tiefe 0, allerdings verwendet man in der Schule oft das Wort Höhe für Tiefe und beginnt bei 1 statt bei 0 wie es richtige Informatiker tun.
Bennenung der Baumelemente
Dieser Baum hat 4 Blätter.

Teilbäume

Nimmt man einen Knoten des Baums und alle seine Kinder und Kindeskinder so hat man einen Teil des Baums und nennt ihn Teilbaum.
Im Bild unten ist der Teilbaum des „Eltern-Knoten von Knoten 5 und 6 und der Teilbaum der rechten Kinds der Wurzel farbig hinterlegt.
Bennenung der Baumelemente
Beispeiel für Teilbäume

Binärbäume

In einem Binärbaum haben alle Knoten maximal 2 Kind-Knoten.
Ein Binärbaum heißt voll, wenn jeder Knoten genau zwei Kinder hat oder ein Blatt-Knoten (keine Kinder) ist.
Ein Binärbaum, welcher voll ist und alle Blätter in der gleichen Tiefe sind heißt vollständig.
kein Binärbaum
Dies ist kein Binärbaum, da die Wurzel 3 Kinder hat auch K 2 hat mehr als 2 Kinder.

voller Binärbaum vollständiger Binärbaum nicht voller Binärbaum
Dies sind Binärbäume, der erste ist voll, der zweite vollständig, der dritte nichts von beidem.

Sortierte Binärbäume

Ein Binärbaum ist sortiert, wenn für jeden Knoten gilt, dass das der Wert im linken Kind kleiner und der Wert im rechten Kind größer ist als der Wert in seiner Wurzel (es kann auch andersherum sortiert werden: links größer und rechts kleiner).
geordneter Baum mit Zahlen geordneter Baum mit Text
Zwei sortiert Bäume, einer mit Text und einer mit Zahlen.

Suchen im sortierten Baum

Um zu überprüfen, ob ein Wert in einem sortieren Baum vorhanden ist, beginnt man bei der Wurzel.
Ist der Wert der Wurzel der gesuchte Wert, so ist man fertig.
Ansonsten überprüft man, ob der gesuchte Wert kleiner als die Wurzel ist, dann nimmt man den linken Kind-Knoten, andernfalls den rechten.
Jetzt überprüft man wieder den aktuellen Knoten: Hat er den gesuchte Wert, so ist man fertig. Ist der gesuchte Wert kleiner als der im Knoten, so nimmt man dessen linken Knoten, um weiter zu suchen, sonst den rechten.
Dies setzt man fort, bis man den gesuchten Wert im Baum gefunden hat oder man keinen Knoten hat um weiter zu suchen.
Beispiel:
Gegeben ist folgender sortierter Baum, in welchem wir zuerst den Wert 6 suchen und dann den Wert 13.
Baum in dem gesucht wird
Ein sortierter Binärbaum in welchem die Werte 6 und 13 gesucht werden.
Suchen wir nach der 6, so beginnen wir bei der Wurzel.
Die Wurzel hat den Wert 8 und es gilt 6<8 somit gehen wir zum linken Kind-Knoten.
Dieser Knoten hat den Wert 4. Da 6>4 gehen wir hier zum rechten Kind-Knoten.
Dieser Knoten hat den gesuchten Wert 6.
Der gesuchte Wert kommt somit im Baum vor.
Pfad zur gesuchten 6
Die 6 wird gefunden, nachdem die 8, 4 und 6 besucht wird.

Suchen wir nach der 13, so beginnen wir bei der Wurzel.
Die Wurzel hat den Wert 8 und es gilt 13>8 somit gehen wir zum rechten Kind-Knoten.
Dieser Knoten hat den Wert 12. Da 13>12 gehen wir wieder zum rechten Kind-Knoten.
Dieser Knoten existiert nicht.
Der gesuchte Wert kommt somit nicht im Baum vor.
Pfad zur gesuchten 6
Die 13 ist nicht im Baum, hier wird zuerst die 8 dann die 12 überprüft.
Bewertung der Suche im sortierten Baum: Ist ein Binärbaum ausgewogen, so hat er bei n Knoten eine Tiefe von log2(n). Da jede Suche maximal den Pfad von der Wurzel zu einem Blatt nimmt, ist die Suche hier viel schneller als die lineare Suche in einem Array.
Bei 1024 Werte werden in einem solchen Baum nur 10 Knoten überprüft anstatt von 1024 bei der linearen Suche.
Bei 10 000 000 Knoten braucht man im Baum 24 Vergleiche und hat eine immense Zeitersparnis.

Bei einem sortieren Baum kann es vorkommen, dass er zu einer Liste „degeneriert”. Hier hätte man keine Zeitersparnis.
Daher ist es wichtig bei Suchbäumen auf Ausgewogenheit zu achten.
Die Algorithmen hierfür fürhern aber über den Bildungsplan hinaus, wer Lust hat suche nach AVL-Bäumen.

Einfügen in einen sortiert Binärbaum

Das Einfügen funktioniert ähnlich wie das Suchen. Man sucht nach dem Wert, der eingefügt werden soll.
Kommt man hier zu einem nicht existierenden Knoten, so ist dies der Ort an dem der neue Knoten eingefügt wird.
Man kann das Vorgehen um einen Wert in einen Baum einzufügen und die Sortierung aufrecht zu erhalten wie folgt als Algorithmus beschreiben:
  1. Nimm die Wurzel als akutellen Knoten
  2. Vergleiche den neuen Wert mit dem aktuellen Knoten
  3. Ist er kleiner nimm das linke Kind als aktuellen Knoten, sonst den rechten.
  4. Existiert der aktuelle Knoten nicht, so fügt man hier den neuen Wert ein,
    sonst weiter bei 2.
Im folgenden Beispiel wird in einen Baum, der nur aus dem Wurzel-Knoten mit dem Wert 10 besteht, nacheinander die Zahlen 15, 11, 8, -5, 7, 100 und 9 eingefügt.


Anwendungsbeispiele für Bäume

Neben dem Wahrscheinlichkeitsbaum, den wir aus der Mathematik kennen, gibt es für Bäume nahezu unendlich viele Anwendungsbeispiele. Sie können überall verwendet werden, wo es (abstrakte) Hierarchien gibt.


Aufgaben

  1. Ist es ein Baum?
    1. Baum mit extra Kante


    2. Baum mit fehlender Kante


  2. Teilbäume
    1. Markieren Sie den rechten Teilbaum der Wurzel und beide Teilbäume des Knotens B.
      Baum mit extra Kante

    2. Wie sieht ein Baum aus, in dem jeder Knoten nur einen Teilbaum hat?
  3. In einen Baum werden nacheinander die Zahlen 50, 20, 60, 10, 25, 57 und 101 eingefügt.
    Geben Sie nach jedem Einfügen an, ob der Baum voll und/oder vollständig ist.
    1. Baum Nr 1

    2. Baum Nr 1

    3. Baum Nr 1

    4. Baum Nr 1

    5. Baum Nr 1

    6. Baum Nr 1

    7. Baum Nr 1

  4. Erstellen Sie die gesuchten Bäume
    1. Fügen Sie in einen geordneten Baum folgende Knoten in der gegebenen Reihenfolge ein: 5, 4 und 6


    2. Fügen Sie in einen geordneten Baum folgende Knoten in der gegebenen Reihenfolge ein: 4, 5 und 6


    3. Fügen Sie in einen geordneten Baum folgende Knoten in der gegebenen Reihenfolge ein: 712, 100, 20, 158 und 157


    4. Fügen Sie in einen geordneten Baum folgende Knoten in der gegebenen Reihenfolge ein: 10, 5, 12, 6, 11, 13 und 4


  5. Ein Baum kann als Tabelle angegeben werden.
    Hier hat jeder Knoten einen Index.
    Seine Kinder werden nur mit diesem Index angegeben.
    1. Rekonstruieren Sie den Baum aus folgender Tabelle:
      IndexInhaltlinkes Kindrechtes Kind
      1123
      224
      34
      43


    2. Rekonstruieren Sie den Baum aus folgender Tabelle:
      IndexInhaltlinkes Kindrechtes Kind
      1Wurzel23
      2Teilbaum 14
      3Teilbaum 256
      4Blatt 1
      5Blatt 2
      6Blatt 3


    3. Rekonstruieren Sie den Baum aus folgender Tabelle:
      IndexInhaltlinkes Kindrechtes Kind
      1Voll23
      2ist45
      3tatsächlich
      4dieser
      5Baum


    4. Rekonstruieren Sie den Baum aus folgender Tabelle:
      IndexInhaltlinkes Kindrechtes Kind
      1degeneriert2
      2K13
      3K24
      4K3