Im Moment stehe ich mit meinen Schülern aus der Q11 mal wieder beim Thema “Binäre Suchbäume”. Dabei ist es ganz schön, mal völlig neue Ansätze zu hören und neue Methoden bei den Schülern zu finden. Wie die folgende Aufgabe:
Aufgabe
Die Position eines Knoten in einem binären Suchbaum kann durch eine Sequenz von “L” und “R”, beginnend bei der Wurzel, angegeben werden.
Implementiere eine Funktion String gibPosition(int zahl), weche die Position einer Zahl in einem binären Suchbaum in der Form “LRRRLLLLRR” zurückgibt. Für die Wurzel würde “” zurückgegeben werden. Ist die Zahl nicht vorhanden, so wird Null zurückgegeben.
Eine schöne Ergänzung der Aufgabe wäre eine Umformatierung der Zeichenkette “LRRRLLLLRR” in der Form “1xLinks, 3xRechts, 4xLinks, 2xRechts” mit Hilfe von Zählwiederholungen und/oder bedingten Wiederholungen.
Wer im Ürbigen eine Implementierung mit grafischer Darstellung und Dateiimport benötigt, kann ja mal in meine Lösung reinschauen: BinBaumZeichnen
Bei Aufgaben dieser Art finde ich es schade, dass der Sinn der Aufgabe nicht recht klar wird. Warum sollte es mich als Schüler motivieren, eine derartige Funktion zu erstellen? Und wenn wir im Bereich der OOP sind: Ist es etwa eine Methode? Und wenn ja, in welcher Klasse?
Der Sinn der Aufgabe….die Idee kam von einem Schüler. Da er keine grafische Darstellung für die Binärbäume hatte, wollte er eine textuelle Darstellung für die Position von Knoten im Baum haben. Er kam daher auf die Idee mit “2xRechts,3xLinks,R,L” etc.
Zum Thema OOP: Das würde natürlich als Methode rekursiv mit Hilfe des Kompositum-Musters implementiert werden.