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