Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Eine Einführung in die Programmiersprache C und die Grundlagen ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>E<strong>in</strong>e</strong> <strong>E<strong>in</strong>führung</strong> <strong>in</strong> <strong>die</strong> Informatik <strong>und</strong> <strong>die</strong> <strong>Programmiersprache</strong> C<br />
28 (B<strong>in</strong>äre) Bäume<br />
Wenn man auf schnelles Suchen angewiesen ist, können Listen nicht verwendet werden. Als alternative<br />
dazu bieten sich Bäume an. Im Gegensatz zu e<strong>in</strong>er Liste ist e<strong>in</strong> Baum e<strong>in</strong>e Hierarchische<br />
Struktur, bei der effizientes Suchen möglich ist. E<strong>in</strong> Baum ist von Natur aus immer sortiert.<br />
Bei e<strong>in</strong>em b<strong>in</strong>ären Baum hat jedes Element zwei Nachfolger, auf der l<strong>in</strong>ken Seite das kle<strong>in</strong>ere Element,<br />
<strong>und</strong> auf der rechten Seite das grössere. (L<strong>in</strong>ks <strong>und</strong> Rechts s<strong>in</strong>d willkürlich gewählt).<br />
Beispiel für e<strong>in</strong>en Baum<br />
Wurzel<br />
Ebene 1<br />
12<br />
Ebene 2<br />
5<br />
13<br />
Ebene 3<br />
4<br />
6 15<br />
Ebene 4<br />
2<br />
9<br />
14<br />
17<br />
Ebene 5<br />
8<br />
10<br />
16<br />
20<br />
Der oberste Knoten e<strong>in</strong>es Baumes heisst Wurzel. E<strong>in</strong> Element, das ke<strong>in</strong>e Nachfolger hat, wird als<br />
Blatt bezeichnet, e<strong>in</strong> Element mit Nachfolger als Knoten. Jedes Blatt <strong>und</strong> jeder Knoten ist genau<br />
e<strong>in</strong>em Knoten untergeordnet. Jeder Knoten bildet zusammen mit se<strong>in</strong>en untergeordneten Elementen<br />
e<strong>in</strong>en Teilbaum.<br />
Bei e<strong>in</strong>em optimal verteilten Baum haben bis auf <strong>die</strong> Knoten der letzten <strong>und</strong> der zweitletzten Ebene<br />
alle Knoten zwei Nachfolger. Dies wird als ausgeglichener Baum bezeichnet. Bei e<strong>in</strong>em ausgeglichenen<br />
Baum f<strong>in</strong>det man jedes Element nach spätestens log2(N) vergleichen.<br />
E<strong>in</strong> Datenelement e<strong>in</strong>es Baumes könnte <strong>in</strong> C wie folgt def<strong>in</strong>iert werden:<br />
typedef struct Datenelement {<br />
/* Hier kommen <strong>die</strong> Daten <strong>die</strong> gespeichert werden sollen */<br />
/* (Z.B. struct Student Daten; oder wie hier e<strong>in</strong> simpler <strong>in</strong>t */<br />
<strong>in</strong>t Wert;<br />
/* Und hier das wichtigste: Die Zeiger auf <strong>die</strong> Nachfolger */<br />
struct Datenelement *Left;<br />
struct Datenelement *Right;<br />
} TreeNode;<br />
Gedruckt am 10.09.2009 14:23:00 Letzte Änderung am: 10. September 2009 Version 2.4.1, I. Oesch 110/147