traversieren von binärbaum

Status
Nicht offen für weitere Antworten.
K

k.

Gast
Servus,
ich hab folgenden code
Code:
class blabla
{
   Album toGet = null;
	public Album getAlbum( Pile p, String Titel )
	{
		if (p != null)
		{
			if (p.album.getTitel().equalsIgnoreCase( Titel ))
				toGet = p.album;
			getAlbum( p.rechts, Titel );
			getAlbum( p.links, Titel );
		}
		return toGet;
	}
}
aufgerufen wird das NUR über
Code:
   public Album getAlbum( String Titel )
	{
      toGet = null;
		return getAlbum( wurzel, Titel );
	}
die frage: kann ich das irgendwie hinkriegen, dass ich die variable toGet weglassen kann? probiert habe ich das:
Code:
	public Album getAlbum( Pile p, String Titel )
	{
		if (p != null)
		{
			if (p.album.getTitel().equalsIgnoreCase( Titel ))
				return p.album;
			getAlbum( p.rechts, Titel );
			getAlbum( p.links, Titel );
		}
		return null;
	}
funktioniert aber nicht wie gewünscht....
 
S

SlaterB

Gast
> getAlbum( p.rechts, Titel );
> getAlbum( p.links, Titel );

macht keinen Sinn, selbst wenn dort was gefunden wird, verarbeitetst du den Rückgabewert gar nicht...

----------

if (p == null) {
return null;
}

if (p.album.getTitel().equalsIgnoreCase( Titel )) {
return p.album;
}

Album a = getAlbum( p.rechts, Titel );
if (a != null) {
return a;
}
return getAlbum( p.links, Titel );
 

Marco13

Top Contributor
Die beiden Aufrufe machen glaubich schon Sinn: toGet liegt in der Klasse, und wird bei einem rekursiven Aufruf mit dem "letzten" Element überschrieben, das gefunden wird. Das ist sch... :autsch: ... aber die (deswegen sehr berechtigte!) die Frage, wie man das vermeiden kann, hast du ja beantwortet :)
 
K

k.

Gast
toGet würde nur überschrieben werden, wenn sie equal sind, von daher würds auch so gehn, nur hat mir das ned so gefallen ;)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben