No è molto più semplice usare una visita inorder,postorder o preorder.

codice:
//visita risocsivamente l'albero di nodi del documento xml e costruisce
    //l'albero di TreeNodes corrispondente
    public static void loadData(Element rootElement,DefaultMutableTreeNode root)
    {
        List children = rootElement.getChildren();
        Iterator childrenIter = children.iterator();
        while(childrenIter.hasNext())
        {
            Element current = (Element)childrenIter.next();
            DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(current.getName());
            root.add(newNode);
            loadData(current,newNode);
        }
    }
Il codice sopra fa la cosa che vuoi fare tu con un documento xml (che ha una struttura ad albero), quindi devi solo modificare quello.

A grandi linee l'algoritmo da seguire è:
-chiamare il metodo con parametri un nodo di tipo TreeSSl che è la radice del tuo albero ed un DefaultMutableTreeNode che è la radice del Jtree da costruire.
-A partire dal padre fare un ciclo e salvare in un array o un Vector o una List o quello che è tutti i figli del nodo corrente.
-Far partire un ciclo che scandisce ad uno ad uno i nodi di questo array (i figli del nodo corrente) e per ognuno (cioè ad ogni iterazione del ciclo) fare le seguenti cose
1)Ottenere l'informazione dal nodo di tipo TreeSSl ed inserirla in un nuovo DefaultMutableTreeNode creato sul momento
2)Aggiungere il nuovo DefaultMutableTreeNode come figlio del DefaultMutableTreeNode corrente (il parametro del metodo)
3)Richiamare ricorsivamente il metodo con parametri il nodo TreeSSl esaminato nella corrente iterazione del ciclo e il nuovo DefaultMutableTreeNode creato.

Il resto lo fa la ricorsione.