Data un' interfaccia:
codice:
public interface AlberoBinario<T> {
   AlberoBinario<T> getLeft();
   AlberoBinario<T> getRigth();
   T getInfo();
   boolean isEmpty();
   List<T> preordine();
 }
e una classe :
codice:
public class AlberoBinarioImpl<T> implements AlberoBinario<T> {
    private T info;
    private AlberoBinario<T> left;
    private AlberoBinario<T> right;
    public AlberoBinarioImpl(T info,AlberoBinario<T> left,AlberoBinario<T> right){
        this.info=info;
        this.left=left;
        this.right=right;
    }
   public AlberoBinario<T> getLeft() {return left;}
   public AlberoBinario<T> getRigth() {return right;}
   public T getInfo() {return info;}
   public boolean isEmpty() {
        if(info==null && left==null && right==null)return true;
        return false;
   }
   public List<T> preordine() {...}
}
Implementare il metodo ricorsivo preordine che ritorna una lista con le informazioni
dell’albero in preordine.

Ho fatto vari tentativi ma non ci riesco, il metodo non riceve in ingersso nessun parametro di tipo AlberoBinario, quindi è impossibile scorrere l'albero ricorsivamente secondo me!

Qulcuno ha qualche dritta da darmi? Grazie.