Bintree größten Wert

emceegenty1

Mitglied
Die Methode soll den größten Wert in einem Baum ausgeben aber wohlmöglich ist da ein Fehler in der rekursiven Methode. Kann mir jemand helfen?
Java:
int maximum(){
	
	   if (value > max);
	   		max = value;
	   
	   if(links != null)
		   return links.maximum();
	   
	   if(rechts != null)
		   return rechts.maximum();

	   return max;
}
 
Zuletzt bearbeitet:
Der größte Wert in einem binären Baum ist doch immer das Blatt ganz rechts.
Du musst also einfach nur den Pfad ganz rechts bis zum Blatt durchlaufen.
 
max wurde als Klassenvariable vorher deklariert.

Java:
int max = 0;


Ich habe mich falsch ausgedrückt, das ist kein Binärbaum sonder einfach nur ein unsortierer Baum.

Das Programm gibt mir bei folgendem Baum in Infix Notation 111 aus.

(((111)7((999)2(42)))1((23)17(42(8))))
 
Zuletzt bearbeitet:
Wenn der Baum unsortiert ist, dann musst du den kompletten Baum durchlaufen.
Du schaust dir also beim Knoten X, den Wert des Knoten X an sowie das Maximum des linken UND rechten Teilbaums. Das Maximum von den drei Werten gibst du zurück.
 
Hab ich mittlerweile so gelöst

Java:
int maximum(){
	
	   int linkesMax	= links  == null ? 0 : links.maximum();
	   int rechtesMax	= rechts == null ? 0 : rechts.maximum();
	   
	   return Math.max(value, Math.max(linkesMax, rechtesMax));
	   
}


Danke für eure Tipps und Zeit 😉
 

Zurück
Oben