21.11.2013 Aufrufe

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 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!