• Keine Ergebnisse gefunden

Algorithmen und Datenstrukturen (WS 2019) Aufgabenblatt 9

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen und Datenstrukturen (WS 2019) Aufgabenblatt 9"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

TU Kaiserslautern – FB Informatik 14.01.20

Dr. Patrick Michel

Algorithmen und Datenstrukturen (WS 2019) Aufgabenblatt 9

zu bearbeiten bis: 20.01.20 - 22.01.20

Aufgabe 9.1 (B¨aume - Theorie)

Wir besch¨aftigen uns mit Bin¨arb¨aumen im Sinne derBinTreeDefinition aus der Vorlesung. Als Werte sollen dieNodeObjekte dabeiIntegerenthalten.

• Zeichnen Sie einen vollst¨andigen Bin¨arbaum der H¨ohe 4; Wieviele Elemente enth¨alt der Baum? Wieviele Element k¨amen auf Ebene 5 hinzu? Wieviele auf Ebene 6?

• Markieren Sie Knoten des Baumsfortlaufendinlevel-order,left-to-right, angefangen bei Markierung 1 f¨ur die Wurzel. Sie markieren also Ebene f¨ur Ebene, von links nach rechts.

• Geben Sie jeweils die Sequenz von Knotenmarkierungen an, die entsteht, wenn Sie den Baum auf folgende Arten durchlaufen: (a) pre-order, (b) in-order, (c) post-order, (d) level-order,left-to-right, (e)level-order,right-to-left.

Aufgabe 9.2 (Iteratoren - Praxis)

Den abstrakten Datentypen wurde ein neuer TypCollectionhinzugef¨ugt, den alle anderen ab- strakten Datentypen erweitern. Dieser enth¨alt lediglich drei Anforderungen: EineCollection hat eine Gr¨oße (size), man kann testen ob sie leer ist (isEmpty) und man kann sie durchlaufen (iterator). Die letzte Anforderung ensteht dadurch, dassCollectionden TypIterable erweitert.

Dies bedeutet, dass alle Ihre Implementierungen die Funktionen nun implementieren m¨ussen! Die Methoden sizeundisEmptywaren in den bisherigen ADTs schon vorhanden, daf¨ur m¨ussen Sie also nichts tun.

• Bringen Sie Ihre Interface Definitionen im Packageexercise.adtauf den neusten Stand.

• Erg¨anzen Sie die fehlende Methode iterator()des Iterable<T>Interface f¨ur die Klasse ArrayList. Erstellen Sie dazu eine lokale, innere Klasse (oder alternativ eine anonyme Implementierung) desIterator<T>Interface. Implementieren Sie neben den beiden MethodenhasNext()undnext()auch die Methoderemove().

• Welche Komplexit¨at haben die drei Methoden jeweils?

• Erg¨anzen Sie nun dieiterator()Methode f¨ur die KlasseDoubleLinkedList und implementieren sie die gleichen drei Methoden im passendenIterator.

• Welche Komplexit¨at haben die drei Methoden jeweils?

Hinweis: Damit Ihr Projekt wieder kompiliert, k¨onnen Sie in allen Typen dieiterator()Methode trivial implementieren, z.B. durchreturn null.

Algorithmen und Datenstrukturen (WS 2019) (9) 1/2

(2)

Aufgabe 9.3 (B¨aume - Praxis)

Als Ausgangspunkt ist eine BinTreeImplementierung gegeben, derenadd Methode die Ele- mente inlevel-order,left-to-rightin den Baum einf¨ugt.

• Vervollst¨andigen Sie die Implementierung desCollectionInterface f¨urBinTree:

– Implementieren Sie die Methodensizeund dannisEmpty, achten Sie bei letzterer darauf, dass die Komplexit¨at besser als die vonsizeist! Welche Komplexit¨at haben die beiden Methoden?

– Schauen Sie sich die Implementierung deriteratorMethode und dieIterator Implementierung an, welche einen in-order Durchlauf macht. Um die Implemen- tierung zu vervollst¨andigen m¨ussen Sie nur noch eine passende Implementierung f¨ur denStackw¨ahlen.

• Implementieren Sie die Methodeflip, die einen Baum horizontal spiegelt, indem sie alle leftundrightReferenzen aller Knoten vertauscht.

• Implementieren Sie einenpre-orderIteratorf¨urBinTree.

• Implementieren Sie einenlevel-order,left-to-rightIteratorf¨urBinTree.

• Implementieren Sie einenpost-orderIteratorf¨urBinTree.

Hinweis: Die Implementierungen der drei Iteratoren sind in ihrer Schwierigkeit von einfach nach schwer sortiert! pre-orderundlevel-ordersind einfacher als in-order,post-orderetwas kom- plizierter. ¨Uberlegen Sie sich jeweils welche abstrakte Datenstruktur die passende f¨ur den ak- tuellen Iterator ist! Sie m¨ussen jeweils nurhasNextundnextimplementieren.

Hinweis: Zur Abgabe im System m¨ussen Sie nebenBinTreeselbst nat¨urlich auch die Imple- mentierungen von abstrakten Datentypen hochladen, die sie verwenden!

• Welche Komplexit¨at haben bei den Iteratoren jeweils diehasNextundnextMethoden.

Unterscheiden Sie dabei, wenn sinnvoll, auch dieaverageundworst-case Komplexit¨at.

• Welche Speicherkomplexit¨at haben die Iteratoren?

Materialien: https://softech.cs.uni-kl.de/homepage/de/teaching/WS19/algodat

Algorithmen und Datenstrukturen (WS 2019) (9) 2/2

Referenzen

ÄHNLICHE DOKUMENTE

Diese soll ein Boolesches Array b der L¨ange N + 1 zur¨uckliefern, das f¨ur jede Zahl k = 0, ..., N anzeigt ob es sich um eine Primzahl handelt (b[k] == true) oder nicht (b[k]

c) Implementieren Sie nun eine Variante der Matrix-Multiplikation welche die Matrix B vor der Multiplikation transponiert und bei der Multiplikation dann jeweils Zeilen von A mit

Stellen Sie zun¨achst das Array als Baum dar und skizieren Sie dann das Feld nach jedem Durchlauf von max heapify, sowohl beim initialen Bauen des Heaps, als auch nach je- dem

Kopieren Sie dann Ihre ArrayHelper Implementierung in den Ordner app/exercise/adt/impl, benennen Sie Datei und Klasse in ArrayList um und implementieren Sie die List Schnittstelle..

In der Vorlesung haben Sie eine alternative Implementierung des List Interface gesehen, mit Hilfe von einzelt verketteten Listen ( SingleLinkedList ).. • Annotieren Sie an jede

• Die Methode createRandomPlane(int size, String seed) konstruiert eine zuf¨allige Instanz mit size St¨adten, bei der jede Stadt zuf¨allige Koordinaten auf einer virtuellen

• In einem 2-3-4-Baum sind alle Bl¨atter auf derselben Ebene, aber auch alle inneren Knoten sind jeweils vollst¨andig, das heißt wenn sie 2, 3 oder 4 Werte beinhalten haben sie

1) Einfügen in Rot-Schwarz Baum (zeichnen) Geben Sie Rot-Schwarz-Bäume an (mit allen. Zwischenschritten), die beim Einfügen der Buchstaben