Baumstrukturen Richard Göbel
Zeigerstruktur in einem Programm Vorlesung Bezeichnung: „Programmieren 1“ Teilnehmer: Student Name: „Müller“ Vorlesungen: Student Name: „Meier“ Vorlesungen: Vorlesung Bezeichnung: „Mathematik 1“ Teilnehmer:
Objekte mit Zeigern bilden einen mathematischen Graphen Ein Graph besteht aus: Knoten gerichteten Kanten (Pfeile) Eine Kante verbindet zwei Knoten miteinander
Probleme bei dem Einsatz allgemeiner Graphen Eine komplexe Zeigerstruktur kann ein Programm unübersichtlich machen Zeiger sind in bestimmten Fällen redundant Durch unvollständige Änderungen redundanter Daten können Fehler entstehen (Inkonsistenzen)
Beispiel: Bearbeitung aller Knoten eines Graphen Beginne mit einer Menge von Knoten, von denen alle anderen Knoten erreichbar sind Füge schrittweise alle Nachfolger von Elementen zu der Menge hinzu Bearbeite alle Knoten der Menge
Probleme bei der Identifikation aller Knoten Zyklen: Endbedingung Alternative Pfade: Effizienz Ein Wurzelknoten reicht!
Bedingungen für eine Baumstruktur Es gibt genau eine Wurzel, von der alle anderen Knoten erreichbar sind Die Wurzel hat keinen Vorgänger Mit Ausnahme der Wurzel hat jeder Knoten genau einen Vorgänger Damit gilt: keine Zyklen genau einen Pfad zu jedem Knoten von der Wurzel (keine alternativen Pfade).
Bäume: Begriffe Blatt: Ein Knoten ist ein Blatt, wenn keine Kanten von diesem Knoten ausgehen. Elternknoten (Vaterknoten): a ist ein Elternknoten von b wenn eine Kante von a nach b existiert. Kindknoten: a ist ein Kindknoten von b wenn eine Kante von b nach a existiert. Vorgänger: a ist ein Nachfolger von b wenn a über einen Pfad (Sequenz von Knoten) von dem Knoten b erreichbar ist.
Beispiel für einen Baum
Binäre Bäume Jeder Knoten hat höchsten zwei Nachfolger Beispiel:
Binärer Baum: Definition eines Knotens public class Node { private int value; private Node left; private Node right; // Konstruktoren und Methode . . . }
Reihenfolgen für die Bearbeitung eines Baumes Preorder: 4, 2, 1, 3, 6, 5, 7 Postorder: 1, 3, 2, 5, 7, 6, 4 Inorder: 1, 2, 3, 4, 5, 6, 7 (nur binärer Baum) 4 2 3 1 6 7 5