Ciao a tutti!!!!

ho fatto un esame in cui ho una classe astratta con un metodo concreto toString(). Ho provato in tutti i modi a realizzarlo ma non sono venuto a niente. toString appunto ritorna una stringa e questo va fatto ricorsivo e non capisco come poterlo fare. Vi do la specifica della classe:

codice:
public abstract class BEalbero 
{
	// OVERVIEW: Un BEalbero e' un albero binario, in cui nodi e foglie sono etichettati con valori omogenei.
	// Un BEalbero e' modificabile.
	// Tipici valori astratti:
	// n, se e' una foglia etichettata n
	// ( n, a1, a2 ) , se e' un nodo etichettato n con sottoalberi a1 e a2
	
	public abstract BEalbero sinistro() throws NotANode;
	// EFFECTS: se this e' una foglia solleva NotANode, altrimenti
	// ritorna il sottoalbero sinistro di this
	
	public abstract BEalbero destro() throws NotANode;
	// EFFECTS: se this e' una foglia solleva NotANode, altrimenti
	// ritorna il sottoalbero sinistro di this
	
	public abstract Object etichetta();
	// EFFECTS: ritorna l'etichetta di this
	
	public abstract boolean foglia();
	//EFFECTS: se this e' una foglia ritorna true, altrimenti ritorna false
	
	public abstract BEalbero nuovoalbero( Object x, BEalbero d ) throws ClassCastException, NullPointerException;
	// EFFECTS: se x o d sono null solleva NullPointerException;
	// se x oppure le etichette di d non hanno lo stesso tipo delle etichette di this, solleva ClassCastException;
	// alstrimenti restituisce un nuovo BEalbero, la cui radice e' etichettata da x,
	// e i cui sottoalberi sinistro e destro sono this e d.
	
	public abstract void rimpiazzasinistro( BEalbero s ) throws ClassCastException, NullPointerException;
	//EFFECTS: se s e' null solleva NullPointerException;
	// se il tipo delle etichette di s e' diverso da quello delle etichette di this solleva ClassCastException, altrimenti
	// rimpiazza il sottoalbero sinistro di this con s.
	
	public String toString()
	{
        }
}
praticamente da questa bisogna creare due sottoclassi che la implementano, Nodo e Foglia in cui nodo ha l'etichetta e due sottoalberi e foglia ha solamente l'etichetta.

Metto in dubbuio la bonta' di questa scelta per realizzare l'albero ma cosi' e', forse e' per questo che nn riesco a fare toString. Potreste darmi qualche suggerimento?

Grazie!!!