24.11.2013 Aufrufe

Teil 7: Bäume Beispiele (1)

Teil 7: Bäume Beispiele (1)

Teil 7: Bäume Beispiele (1)

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Implementierung von beliebigen <strong>Bäume</strong>n<br />

Implementierung mit verketteten Knoten<br />

Jeder Knoten enthält 2 Zeiger:<br />

•! Ein Zeiger auf das erste Kind<br />

•! Ein Zeiger für den rechts liegenden<br />

Geschwisterknoten (engl. sibling)<br />

root<br />

A<br />

A<br />

B<br />

C<br />

D<br />

E<br />

F<br />

G<br />

B<br />

C<br />

D E F G<br />

H I J K<br />

H<br />

I<br />

J<br />

K<br />

L<br />

M<br />

L<br />

M<br />

struct Node<br />

{<br />

int data;<br />

Node* firstChild;<br />

Node* nextSibling;<br />

};<br />

O. Bittel; Sept. 2008 Programmiertechnik 2 - <strong>Bäume</strong> 7-11<br />

Implementierung von vollständigen Binärbäumen<br />

Implementierung mit einem Feld<br />

Die Knoten werden ebenenweise in einem Feld abgespeichert.<br />

Ebene 0<br />

Ebene 1<br />

5<br />

8 7<br />

a [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]<br />

5 8 7 1 3 9 2 12 10 6<br />

Ebene 2<br />

1 3 9 2<br />

Ebene 3<br />

12 10 6<br />

Effizienter Zugriff auf Eltern und Kinder:<br />

•! Kinder von a[i]: a[2*i+1] und a[2*i+2] für i " 0<br />

•! Elternknoten von a[i]: a[(i-1)/2] für i " 1 und mit ganzzahliger Division<br />

Beispiel:<br />

•! Kinder von a[3] = 1: a[7] = 12 und a[8] = 10<br />

•! Elternknoten von a[6] = 2: a[(6-1)/2] = a[2] = 7<br />

O. Bittel; Sept. 2008 Programmiertechnik 2 - <strong>Bäume</strong> 7-12

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!