Bäume und Zeiger in C?

2 Antworten

WennDu Dir die typische graphische Darstellugn eines Baumes vorstellst, dann gibt es Kanten vom Elternknoten auf die Kindknoten.

Ein Pointer ist ein Referenztyp, er beinhaltet die Speicheradresse des referenzierten Objektes.

Diese Referenzen für die Nachfolger entsprechen den Kanten der graphischen Darstellung.

Ich muß dann im Endeffekt die Referenz nur noch dereferenzieren, um auf das Zielobjekt zuzugreifen, beachte hierbei, daß

(*node).member /+ ist äquivalent zu */
node->member

Die Funktion createNode legt einen neuen Knoten an, welcher sich einen Wert (key) merkt und gibt ihn (bzw. einen Zeiger darauf) zurück.

Über den Zeiger hast du auch Zugriff auf die Eigenschaften des Knoten (key, left, right).

Wie du in der main-Funktion siehst, kann durch den Zugriff auf die Eigenschaften die Verknüpfung der einzelnen Knoten erfolgen. Zuerst wird ein Wurzelknoten (root) kreiert. Anschließend werden zwei weitere Knoten angelegt und mit ihm verbunden (left, right).