Viele Probleme kannst du mithilfe von Graphen modellieren.
Wenn du ein Problem geeignet als Graph modelliert hast, kannst du die Standard-Algorithmen der Graphentheorie darauf anwenden und so die Lösung des Problems berechnen.

Ein Beispiel: Du modellierst das Straßennetz deiner Heimatstadt als einen Graphen. Dann brauchst du nur noch den Kürzeste-Wege-Algorithmus anzuwenden, wenn du von A nach B navigieren willst.
Ein Graph ist anschaulich dargestellt so etwas:

Formal gesehen besteht ein Graph aus einer endlichen, nichtleeren Menge von Knoten (die Kringel in der Darstellung) und einer Menge von Kanten (die Pfeile in der Darstellung).
Eine Kante ist eindeutig angegeben durch ihren Startknoten und ihren Endknoten. Damit lässt sich die Kante als Paar von zwei Knoten (dem Startknoten) und (dem Endknoten) angeben.
Der Graph aus der Abbildung besteht also aus der Knotenmenge und der Kantenmenge .
Formal gesehen ist ein Graph ein Paar , wobei eine endliche, nichtleere Menge von Knoten und die Menge der Kanten ist. Die Kanten sind Paare von je zwei Knoten; die Menge der Kanten ist also eine Teilmenge des kartesischen Produkts und damit eine Relation auf der Menge .
Diese Relation kannst du in Worten etwa mit "ist durch eine dorthin gerichtete Kante verbunden mit" ausdrücken.
Pfad, Weg
Wenn du in einem Graphen von einem Knoten entlang der Kanten zu einem Knoten gelangst, beschreitest du einen Pfad (oder Kantenzug). Achte darauf, dass du dabei die Kanten in Pfeilrichtung durchläufst.
Ein Pfad ist eine endliche Folge von Kanten , wobei jeweils gilt. Die Kanten eines Pfades hängen also zusammen. Endknoten einer Kante ist jeweils Startknoten der folgenden Kante.
Die Anzahl der Kanten eines Pfades ist die Länge des Pfades.
Zum Beispiel ist ein Pfad der Länge 5 in dem oben gezeigten Graphen.
Ein Pfad heißt einfacher Pfad, wenn er keine Kante mehrfach durchläuft. Der Pfad ist kein einfacher Pfad, denn er durchläuft die Kante (0,1) mehrfach. Wenn du die letzte Kante von weglässt, erhältst du einen einfachen Pfad .
Ein Pfad heißt Weg, wenn er keinen Knoten mehrfach durchläuft. Dies ist erfüllt, wenn alle untereinander und alle untereinander verschieden sind. Der Pfad ist zwar ein einfacher Pfad, aber kein Weg. Denn die Knoten sind nicht alle untereinander verschieden, der Knoten 0 tritt zweimal auf. Wenn du die letzte Kante von weglässt, erhältst du einen Weg .
Ein Pfad heißt Zyklus, wenn er geschlossen ist, wenn also sein Start- und Endknoten übereinstimmen.
Ein Zyklus, der ein Weg ist, heißt Kreis. Zum Beispiel ist der Pfad ein Kreis. Denn Start- und Endknoten stimmen überein, und alle und alle sind untereinander verschieden.
Baum
In der Informatik spielen Bäume eine herausragende Rolle. Denn viele Daten lassen sich als hierarchische Struktur modellieren, also als eine Struktur, die sich von einem Punkt aus verzweigt. Eine solche Struktur wird als Baum bezeichnet.
Ein (gerichteter) Graph ist ein Baum, wenn
er genau einen Knoten enthält, zu dem keine Kante hinführt,
zu jedem anderen Knoten genau eine Kante hinführt und
er keinen Kreis enthält.
Der folgende gerichtete Graph ist ein Baum. Ein (gerichteter) Baum wird meist so gezeichnet, dass die Kanten von oben nach unten gerichtet sind.

Ganz oben siehst du den Knoten, zu dem keine Kante hinführt; dieser Knoten ist die Wurzel des Baums. Zu jedem anderen Knoten führt genau eine Kante hin. Und außerdem enthält der Graph keinen Kreis. Er ist somit ein Baum.
Ferner erkennst du in dem Baum einige Knoten, von denen keine Kante wegführt; diese Knoten sind die Blätter des Baums (hier grün, wie Blätter nun einmal normalerweise sind, dargestellt). Alle anderen Knoten des Baums heißen innere Knoten.
In einem Baum wird die Länge des Weges von der Wurzel zu einem Knoten als die Tiefe des Knotens bezeichnet. Die Wurzel selbst hat somit die Tiefe 0.
Die Knoten gleicher Tiefe bilden eine Schicht im Baum.
Die Tiefe des gesamten Baums ist das Maximum der Tiefen aller seiner Knoten.
Beispielsweise hat der oben gezeigte Baum die Tiefe 3.
Binäre Bäume
Ein (gerichteter) Baum ist ein binärer Baum, wenn von jedem Knoten höchstens zwei Kanten wegführen.
Ein binärer Baum heißt vollständig, wenn von allen inneren Knoten genau zwei Kanten wegführen und wenn alle Blätter die gleiche Tiefe haben.
In der folgenden Abbildung siehst du einen vollständigen binären Baum der Tiefe 3:

Manchmal ist auch die letzte Schicht in einem vollständigen binären Baum "angeknabbert" - es fehlen dort ein paar Knoten. Dann sprechen wir von einem fast vollständigen binären Baum. Die folgende Abbildung zeigt einen fast vollständigen binären Baum.

Bei (fast) vollständigen binären Bäumen stehen die Anzahl der Knoten und die Tiefe in engem Zusammenhang (siehe Übungsaufgabe).
Fast vollständige binäre Bäume spielen beispielsweise beim Sortierverfahren Heapsort eine Rolle.