Credo che questa classe sia tutto ciò che ti serve:
codice:
public class FileNode {
   private String nome;
   private Vector figli;

   public FileNode(String nome) {
      this.nome = nome;
      figli = new Vector();      
   }

   public FileNodo(String nome, FileNode figlio) {
      this.nome = nome;
      figli = new Vector();
      figli.add( figlio );
   }

   public String getNome() { return nome; }

   public void aggiungi(FileNode figlio) {
      figli.add( figlio );
   }

   public FileNode getFiglio(String nome) {
      return trova(nome);
   }

   private FileNode trova(String nome) {
      boolean trovato = false;
      FileNode f = null;
      int i = 0;
      while ((i < figli.size()) && !trovato) {
         if (((FileNode) figli.elementAt(i)).getNome().equals(nome)) {
            trovato = true;
            f = (FileNode) figli.elementAt(i);
         }
      }
      return f;
   }
}
In questo modo, per generare la gerarchia che hai dato tu come esempio, puoi usare queste istruzioni:
codice:
FileNode f=new FileNode("root"); 
FileNode fratello1=new FileNode("fratello1"); 
FileNode fratello2=new FileNode("fratello2"); 
FileNode figlioFratello1=new FileNode("figlio1"); 

f.aggiungi(fratello1);
f.getFiglio("fratello1").aggiungi(figlioFratello1);//primo figlio 
f.aggiungi(fratello2);
In questo modo puoi aggiungere quanti fratelli vuoi.


Ciao.