Loading
Die EPA Informatik fordert die Konstruktion und Analyse linearer wie nichtlinearer Datenstrukturen. Im Mittelpunkt stehen ADT-Definition, Implementation in Java/Python und die Laufzeitanalyse der charakteristischen Operationen.
6Abschnitteca. 19Min Lesezeit3KompetenzenNiveauBasis 2 · Standard 2 · Vertiefung 2Stand 06/2026
grundlegendes Niveau
gA: lineare Liste, Stack, Queue als ADT spezifizieren und mit Arrays oder verketteten Strukturen implementieren; Binärbaum darstellen und traversieren.
erhöhtes Niveau
eA: Bäume balancieren (AVL-Prinzip qualitativ), Graphenalgorithmen (BFS, DFS, Dijkstra) implementieren, Hashtabellen-Kollisionsstrategien (Open Addressing vs. Chaining) gegenüberstellen.
Lesetiefe: Vertiefung
Schriftgröße: Standard
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Implementieren Sie eine Queue mithilfe zweier Stacks (amortisiert O(1) je Operation) und begründen Sie die amortisierte Analyse über die Beobachtung, dass jedes Element höchstens einmal vom Eingangs- auf den Ausgangsstapel umgeschoben wird.
Aktive Wiederholung
Implementieren Sie eine generische Klasse `Stack<T>` mit verketteter Liste und beurteilen Sie die Laufzeit jeder Operation in O-Notation.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Binärer Suchbaum (BST) nach Einfügen 50, 30, 70, 20, 40, 60, 80
Fügen Sie der Reihe nach 50, 30, 70, 20, 40, 60, 80 in einen anfangs leeren BST ein. Geben Sie In-Order- und Pre-Order-Traversierung sowie die Suchpfadlänge für 60 an.
50 wird Wurzel; 30 < 50 → links, 70 > 50 → rechts.
20 < 30 → links unter 30; 40 > 30 → rechts unter 30; 60 < 70 → links unter 70; 80 > 70 → rechts unter 70.
In-Order: 20 30 40 50 60 70 80 (sortiert!). Pre-Order: 50 30 20 40 70 60 80.
50 → 70 → 60 — drei Vergleiche, Pfadlänge 2. Höhe des Baums h = 2; Suche im balancierten BST in O(log n).
Ergebnis: In-Order liefert sortierte Folge; Suche nach 60 benötigt 3 Vergleiche.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Begründen Sie qualitativ, warum die Höhe eines AVL-Baums mit n Knoten in O(log n) liegt (Balancekriterium |h_l − h_r| ≤ 1).
Aktive Wiederholung
Implementieren Sie die Inorder-Traversierung eines Binärbaums rekursiv und iterativ; vergleichen Sie Speicher- und Laufzeitverhalten.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Gewichteter Graph für Dijkstra — kürzester Weg A → E
Geben Sie die BFS- und DFS-Reihenfolge ausgehend von Knoten A im Graphen mit Kanten {A-B, A-C, B-D, B-E, C-F} an.
BFS verwendet eine FIFO-Queue, DFS einen LIFO-Stack (bzw. Rekursion).
Queue: [A] → besuche A, Queue: [B,C] → besuche B, Queue: [C,D,E] → C → D → E → F. Reihenfolge: A, B, C, D, E, F.
A → B → D (zurück) → E (zurück, zurück) → C → F. Reihenfolge: A, B, D, E, C, F.
Beide Verfahren laufen in O(V + E) auf Adjazenzlisten. BFS findet kürzeste Pfade in ungewichteten Graphen, DFS eignet sich für Topologische Sortierung.
Ergebnis: BFS: A, B, C, D, E, F. DFS: A, B, D, E, C, F.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Modifizieren Sie Dijkstra so, dass er nicht nur die Distanz, sondern auch den Pfad rekonstruiert (Vorgänger-Array).
Aktive Wiederholung
Implementieren Sie BFS auf einer Adjazenzliste und ermitteln Sie die kürzeste Pfadlänge zwischen zwei Knoten; analysieren Sie die Laufzeit in O-Notation.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Hashtabelle mit Verkettung (Chaining)
Lastfaktor einer Hashtabelle
n Elemente, m Buckets; α > 0,75 begünstigt Rehashing bei Open Addressing.
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Konstruieren Sie eine bewusst kollidierende Eingabesequenz für eine modulo-basierte Hashfunktion und beurteilen Sie die Sicherheitsfolgen.
Aktive Wiederholung
Implementieren Sie eine Hashtabelle mit Separate Chaining und Lastfaktor-getriebenem Rehashing; analysieren Sie die amortisierte Laufzeit für `put`.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
UML-Klassendiagramm — Vererbung Tier → Hund
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Spezifizieren Sie den ADT „Warteschlange" formal über Vor- und Nachbedingungen seiner Operationen und beurteilen Sie, warum ein Ringpuffer-Array gegenüber der verketteten Liste Speicher spart, aber eine feste Kapazität bzw. ein Vergrößern (Rehashing/Umkopieren) erfordert.
Aktive Wiederholung
Modellieren Sie den ADT „Warteschlange" durch seine Operationen und implementieren Sie ihn generisch sowohl mit einem Ringpuffer-Array als auch mit einer verketteten Liste; beurteilen Sie die jeweiligen Laufzeiten.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.
Min-Heap nach Einfügen von 5, 3, 8, 1, 9, 2
Fügen Sie 5, 3, 8, 1, 9, 2 nacheinander in einen anfangs leeren Min-Heap ein und führen Sie anschließend ein extractMin durch. Geben Sie jeweils die Array-Darstellung an.
Jedes Element wird ans Array-Ende gehängt und steigt auf, solange es kleiner als sein Vater ist. 5 → [5]; 3 → [3,5] (3 < 5, getauscht); 8 → [3,5,8]; 1 → [1,3,8,5] (1 steigt über 5 und 3 auf); 9 → [1,3,8,5,9].
2 ans Ende: [1,3,8,5,9,2] (Index 5). Der Vater liegt bei ⌊(5−1)/2⌋ = 2, dort steht 8; wegen 2 < 8 tauschen: [1,3,2,5,9,8]. Neuer Vater bei Index 0 ist 1; 2 > 1 → Abbruch. Heap: [1,3,2,5,9,8].
Das Minimum 1 (Wurzel) wird zurückgegeben. Das letzte Element 8 rückt an die Spitze: [8,3,2,5,9]. Nun muss 8 wieder absinken (sift-down).
Die Kinder von 8 (Index 0) sind 3 (Index 1) und 2 (Index 2); das kleinste Kind ist 2 → tauschen: [2,3,8,5,9]. 8 steht jetzt auf Index 2 ohne Kinder → fertig. Sowohl insert als auch extractMin laufen in O(log n), da der zurückgelegte Pfad höchstens so lang wie die Baumhöhe ist.
Ergebnis: Heap nach Aufbau: [1,3,2,5,9,8]; nach extractMin zurückgegeben 1, Heap [2,3,8,5,9]. Jede Operation in O(log n).
Typische Fehler
LK-Vertiefung
eA-Vertiefung: Beweisen Sie, dass der bottom-up-Heapaufbau (Floyd) in O(n) liegt, indem Sie die Summe der Sift-down-Kosten über alle Ebenen abschätzen.
Aktive Wiederholung
Fügen Sie die Werte 5, 3, 8, 1, 9, 2 nacheinander in einen anfangs leeren Min-Heap ein, stellen Sie den Heap als Array dar und analysieren Sie die Laufzeit einer extractMin-Operation.
Aktiv abrufen
Erinnere dich an die Kernpunkte — dann aufdecken.