Obtendo todos os filhos no mesmo nível de árvore binária

Quero exibir todas as crianças no mesmo nível de árvore. Então, se eu tenho uma árvore como esta:

            A
   B        C        D
 E   F    G   H    I   J

por exemplo, o nível 3 retornaria os nós E, F, G, H, I e J. Eu tenho um método dentroTreeNode classe, que retorna todos os filhos de um determinado nó, então pensei em fazer algo assim:

static Collection<ITreeNode<IProduct>> getOnLevel(ITree<IProduct> tree, int level)
{
    Collection<ITreeNode<IProduct>> temp;
    int i;
    Iterator<ITreeNode<IProduct>> iterator = tree.getRoot().getChildren().iterator();
    for(i=0; i<=(level); i++) 
    {       
        while(iterator.hasNext())
        {                   
            ITreeNode<IProduct> elem = iterator.next();
            if(i == (level)) 
            {
                temp = elem.getChildren();
                return temp;
            }
        }
    }
    return tree.getRoot().getChildren(); 

}

mas então percebi que apenas itera através de crianças de primeiro nível, então provavelmente tenho que fazer isso de alguma forma recursivamente? Agradecemos antecipadamente, Amar!