13.10.2013 Aufrufe

1. Was ist eine Header – Datei? Was darf in einer Header-Datei ...

1. Was ist eine Header – Datei? Was darf in einer Header-Datei ...

1. Was ist eine Header – Datei? Was darf in einer Header-Datei ...

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.

Fragenkatalog Programmieren 2 Stand: Februar 2013<br />

36. Löschen <strong>e<strong>in</strong>e</strong>s Elements <strong>in</strong> <strong>e<strong>in</strong>e</strong>m b<strong>in</strong>ären Suchbaum:<br />

E<strong>in</strong> Element aus <strong>e<strong>in</strong>e</strong>m b<strong>in</strong>ären Suchbaum zu löschen <strong>ist</strong> etwas aufwändiger als nur zu<br />

sortieren, <strong>e<strong>in</strong>e</strong>n Knoten e<strong>in</strong>zufügen, traversieren oder zu suchen. Die Schlüssel s<strong>in</strong>d me<strong>ist</strong><br />

untrennbar mit der Struktur von Bäumen verbunden.<br />

Blauenst<strong>e<strong>in</strong>e</strong>r<br />

Beim Löschen <strong>e<strong>in</strong>e</strong>s Knotens kommt es zu <strong>e<strong>in</strong>e</strong>r Beschädigung der Baumstruktur. Diese muss<br />

anschließend wieder repariert werden.<br />

Wird e<strong>in</strong> Knoten gelöscht, so muss e<strong>in</strong> anderer gefunden werden, der den Platz des<br />

gelöschten Knotens e<strong>in</strong>nimmt, um die Baumstruktur zu erhalten.<br />

Dieser Knoten muss so gewählt werden, dass die Bed<strong>in</strong>gungen für <strong>e<strong>in</strong>e</strong>n b<strong>in</strong>ären Suchbaum<br />

erhalten bleiben. Somit <strong>ist</strong> der gesuchte Knoten jener mit dem nächst kl<strong>e<strong>in</strong>e</strong>rem oder<br />

größerem Schlüssel. Dies garantiert, dass ke<strong>in</strong> anderer Schlüssel dazwischen liegt.<br />

36.<strong>1.</strong> Algorithmus zum Löschen <strong>e<strong>in</strong>e</strong>s Knotens:<br />

Buch Seite 285.<br />

37. <strong>Was</strong> <strong>ist</strong> e<strong>in</strong> Heap und für welche Operationen <strong>ist</strong> er gut geeignet?<br />

E<strong>in</strong>e Heap <strong>–</strong> Struktur <strong>ist</strong> <strong>e<strong>in</strong>e</strong> sogenannte Prioritätswarteschlange, die es ermöglicht den<br />

größten E<strong>in</strong>trag zu f<strong>in</strong>den, zu löschen und neue Elemente e<strong>in</strong>zufügen.<br />

Es <strong>ist</strong> <strong>e<strong>in</strong>e</strong> besondere Art <strong>e<strong>in</strong>e</strong>s b<strong>in</strong>ären Baumes, der als Feld gespeichert wird. Jeder Knoten<br />

muss dabei die sogenannte Heap <strong>–</strong> Bed<strong>in</strong>gung erfüllen:<br />

37.<strong>1.</strong> Heap <strong>–</strong> Bed<strong>in</strong>gung:<br />

Der Schlüssel jedes Knoten <strong>e<strong>in</strong>e</strong>s Heaps <strong>ist</strong> größer als se<strong>in</strong> Nachfolger. Falls auch gleiche<br />

Schlüssel auftreten können muss der Schlüssel jedes Knotens größer oder gleich dem<br />

s<strong>e<strong>in</strong>e</strong>r Nachfolger se<strong>in</strong>.<br />

E<strong>in</strong> Heap <strong>ist</strong> e<strong>in</strong> vollständiger b<strong>in</strong>ärer Baum. Im Unterschied dazu lautet die Bed<strong>in</strong>gung für<br />

b<strong>in</strong>äre Suchbäume, dass der Schlüssel des l<strong>in</strong>ken Nachfolgers kl<strong>e<strong>in</strong>e</strong>r und der Schlüssel des<br />

rechten Nachfolgers größer <strong>ist</strong>. Daher s<strong>in</strong>d die Elemente <strong>in</strong> <strong>e<strong>in</strong>e</strong>m Baum vollständig anders<br />

verteilt.<br />

Jedem Knoten wird e<strong>in</strong> fortlaufender Index zeilenweise zugewiesen. Diese Indizes<br />

entsprechen den Feld<strong>in</strong>dizes. Der Index „0“ ex<strong>ist</strong>iert nicht.<br />

Die Implementierung im Feld br<strong>in</strong>gt mehrere Vorteile:<br />

Heaps speichern k<strong>e<strong>in</strong>e</strong> expliziten Verknüpfungen, wodurch zum Feststellen des<br />

Vorgängers oder Nachfolgers nur e<strong>in</strong>fache arithmetische Operationen durchgeführt<br />

werden müssen.<br />

Die Nachfolger <strong>e<strong>in</strong>e</strong>s Elements mit dem Index haben die Indizes und .<br />

Umgekehrt s<strong>in</strong>d die Vorgänger zu ermitteln. Der Index <strong>e<strong>in</strong>e</strong>s Vorgängers ergibt sich<br />

zu:<br />

⁄ . Jede Ebene hat 1 Element mehr als alle höheren Ebenen. Jede vollständige<br />

Ebene hat doppelt so viele Elemente als die vorhergehende.<br />

16

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!