MINT üben

Lineare Strukturen, Binärbäume

Zehn Aufgaben zum Begründen, Entwickeln und Beurteilen — mit Schwerpunkt Binärbäume.

Dein Fortschritt:
0 / 0 Aufgaben
3

Aufgabenblock — AFB III

Begründen statt nur nachverfolgen: Strukturen vergleichen, Aussagen allgemein beweisen und eigene Verfahren entwickeln — erst selbst formulieren, dann die Musterlösung aufklappen.

A1
Schlange aus zwei Stapeln
AFB III

Entwickle eine Idee, wie man mit zwei Stapeln ein und aus eine Schlange nachbauen kann, und beurteile den Aufwand von enqueue und dequeue.

Hinweis: Ein Stapel dreht die Reihenfolge um — zweimal umdrehen ergibt die ursprüngliche Reihenfolge.

Strategie: enqueue legt immer auf ein. Woher nimmt dequeue das älteste Element?
Lösungsskizze: Nur wenn aus leer ist, wird ein vollständig nach aus umgeladen.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: enqueue(x) ist ein ein.push(x). Für dequeue wird, falls aus leer ist, der ganze Stapel ein Element für Element auf aus umgeladen; dadurch liegt das älteste Element oben, und aus.pop() liefert es. Ist aus nicht leer, genügt direkt aus.pop(). Einzelne dequeue-Aufrufe können teuer sein (alles umladen), aber jedes Element wird insgesamt nur einmal umgeladen — im Mittel ist der Aufwand pro Operation konstant.

A2
Stapel mit DynArray
AFB III

Beurteile, ob beim Nachbau eines Stapels mit einer dynamischen Reihung das oberste Element am Anfang (Index 0) oder am Ende liegen sollte.

Hinweis: Beide Varianten funktionieren — es geht um den Aufwand.

Strategie: Wie viele Elemente rücken bei insertAt(0, x) bzw. delete(0) nach?
Lösungsskizze: Oben = Ende → append und delete(n − 1) ohne Verschieben.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Liegt das oberste Element am Ende, entsprechen push und pop den Operationen append und delete(getLength() - 1); kein Element rückt nach. Liegt es an Index 0, verschiebt jedes push und pop alle übrigen Elemente. Beide Varianten sind korrekt, „oben = Ende“ ist deutlich effizienter.

A3
Leere Teilbäume zählen
AFB III

Begründe allgemein, dass jeder nicht leere Binärbaum mit n Knoten genau n + 1 leere Teilbäume hat.

Hinweis: Zähle Plätze für Teilbäume und wer sie belegt.

Strategie: Jeder Knoten hat zwei Plätze. Wie viele Knoten sitzen auf einem solchen Platz?
Lösungsskizze: 2n Plätze, n − 1 davon mit Knoten belegt.
Musterlösung anzeigen (zählt als erledigt)

Musterlösung: Jeder der n Knoten hat zwei Plätze für Teilbäume, zusammen 2n. Jeder Knoten außer der Wurzel ist Kind genau eines Knotens und belegt genau einen Platz: n − 1 Plätze sind besetzt. Auf allen übrigen Plätzen sitzt ein leerer Baum: 2n − (n − 1) = n + 1. Deshalb ruft eine rekursive Traversierung sich 2n + 1-mal auf.