Java-Übungsaufgaben - Lösungsvorschlag

Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!

Moderator: Algorithmen und Datenstrukturen

Forumsregeln
Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!
Benutzeravatar
D'Angelo Russell
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 13. Apr 2016 12:56

Re: Java-Übungsaufgaben - Lösungsvorschlag

Beitrag von D'Angelo Russell »

Ja hier auf dem Binärbaum klappt es. Und die Logik ist in meinen Augen gleich....

Code: Alles auswählen

	static int secondMax (TreeNode root, Comparator cmp){
		
		if (root == null) return 0;
		
		else return secondMaxHelp (root,cmp,0,0);
	}
	
	static int secondMaxHelp (TreeNode node, Comparator cmp, int max, int smax){
		
		if (node != null){
			
			// ein Schlüsselwert ist größer als max, daher wird max auf das neue Maximum gesetzt und smax rückt auf das alte Maximum vor
			if (cmp.compareInt(max, node.key) == -1){
				
				smax = max;
				max = node.key;
				
				smax = secondMaxHelp(node.left,cmp,max,smax);
				smax = secondMaxHelp(node.right,cmp,max,smax);
			}
			// ein Schlüsselwert ist größer als das aktuelle zweitgrößte Element, somit wird das zweitgrößte Element aktualisiert
			else if (cmp.compareInt(smax, node.key) == -1){
				
				smax = node.key;
				
				smax = secondMaxHelp(node.left,cmp,max,smax);
				smax = secondMaxHelp(node.right,cmp,max,smax);
			}
			// es muss nichts verändert werden
			else{
				
				smax = secondMaxHelp(node.left,cmp,max,smax);
				smax = secondMaxHelp(node.right,cmp,max,smax);
			}
		}
		return smax;
	}
I got ice in my veins! 8)

Prof. Karsten Weihe
Moderator
Moderator
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: Java-Übungsaufgaben - Lösungsvorschlag

Beitrag von Prof. Karsten Weihe »

D'Angelo Russell hat geschrieben:Ja hier auf dem Binärbaum klappt es. Und die Logik ist in meinen Augen gleich....
Mir scheint, es gibt doch irgendwie ein Problem mit der Logik, das vielleicht auch schon beim Binärbaum auftritt.

Eigentlich kann eine solche Methode nur dann garantiert das richtige Ergebnis liefern, wenn Sie im gesamten Verlauf des Algorithmus beides strikt aktuell halten: secondMax und max. Da Java keine variablen Parameter kennt, ist dafür aber notwendig, dass Sie beide Werte mit return zurückliefern. Das wiederum ist nur möglich, wenn Sie eine Klasse mit max und secondMax als Attributen definieren und ein Objekt davon zurückliefern.

KW

Benutzeravatar
D'Angelo Russell
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 13. Apr 2016 12:56

Re: Java-Übungsaufgaben - Lösungsvorschlag

Beitrag von D'Angelo Russell »

Also die Logik ist in meiner Meinung nach vollkommen gegeben. Ich dachte einfach, dass es reicht die Variablen über die Eingabe im Parameter über die Rekursionsschritte zu übertragen. Es liegt also einzig und allein daran, dass in diesem Fall Java Insiderwissen gefragt ist, wovon ich noch nie gehört habe. Wie wird eine solche Tatsache in der Klausur behandelt? :shock: :shock:
I got ice in my veins! 8)

Prof. Karsten Weihe
Moderator
Moderator
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: Java-Übungsaufgaben - Lösungsvorschlag

Beitrag von Prof. Karsten Weihe »

D'Angelo Russell hat geschrieben:Wie wird eine solche Tatsache in der Klausur behandelt? :shock: :shock:
Ich bemühe mich darum, solche Dinge aus der Klausur herauszuhalten, und bin optimistisch, dass mir das bei der anstehenden Klausur wie bisher auch gelingt. 8)

Sollte es wider Erwarten doch passieren, dass solche Details von Java für die Lösung einer Aufgabe relevant sind, werden wir uns bei der Korrektur bemühen, darauf Rücksicht zu nehmen. Allerdings werden wir auch darauf schauen, ob diese Details in der FoP thematisiert wurden oder nicht.

KW

Benutzeravatar
D'Angelo Russell
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 13. Apr 2016 12:56

Re: Java-Übungsaufgaben - Lösungsvorschlag

Beitrag von D'Angelo Russell »

Alles klar! Vielen herzlichen Dank für die schnelle Antwort! :D
I got ice in my veins! 8)

Prof. Karsten Weihe
Moderator
Moderator
Beiträge: 1824
Registriert: 21. Feb 2005 16:33

Re: Java-Übungsaufgaben - Lösungsvorschlag

Beitrag von Prof. Karsten Weihe »

BTW: Früüüher, so bis Mitte/Ende Neunziger, wurde im Grundstudium weltweit üblicherweise mit einfacheren, didaktisch strukturierten Sprachen gearbeitet, z.B. Pascal. Ein nicht unwesentlicher Grund dafür, dass das geändert wurde, war, dass die Studierenden unbedingt die "echten" Sprachen wollten... 8)

KW

Antworten

Zurück zu „AuD: Programmieraufgaben“