Here is the code for generating all possibles topologies for given n. Total Number of nodes (internal + leaf nodes) in a full binary tree is odd. 
If a tree is full binary tree, then it's left and right sub trees are also full binary trees i.e both left and right sub trees have odd number of nodes.
For a given n, We generate all combinations of full binary tree like this 
First  Iteration: 1 Node on left hand side,  1 root, n-2 on right hand side. 
Second Iteration: 3 Nodes on left hand side, 1 root, n-4 on right hand side. 
 
Third  Iteration: 5 Nodes on left hand side, 1 root, n-6 on right hand side.
. 
. 
. 
Last Iteration: n-2 Nodes on left hand side, 1 root, 1 on right hand side  
In each iteration, we find all possible left trees and right trees. If L full trees are possible on left hand side, R full trees are possible on right hand side - then total number of trees is L*R
public void createAllTopologies(int n){
    if(n%2 == 0) return;
    Map<Integer, List<Node>> topologies = new HashMap<Integer, List<Node>>();
    topologies.put(1, new ArrayList<Node>());
    topologies.get(1).add(new Node(1));
    for(int i=3;i<=n;i+=2){
        List<Node> list = new ArrayList<Node>();
        for(int j=1;j<i;j+=2){
            List<Node> left = topologies.get(j);
            List<Node> right = topologies.get(i-j-1);
            list.addAll(generateAllCombinations(left,right));
        }
        topologies.put(i, list);
    }
    List<Node> result = topologies.get(n);
    for(int i=0;i<result.size();i++){
        printTree(result.get(i),0);
        System.out.println("-----------------------------");
    }
}
private List<Node> generateAllCombinations(List<Node> left, List<Node> right) {
    List<Node> list = new ArrayList<Node>();
    for(int i=0;i<left.size();i++){
        for(int j=0;j<right.size();j++){
            Node nNode = new Node(1);
            nNode.left = left.get(i).clone();
            nNode.right = right.get(j).clone();
            list.add(nNode);
        }
    }
    return list;
}
/* This prints tree from left to right fashion i.e 
       root at left, 
       leftNode at bottom, 
       rightNode at top 
*/
protected void printTree(Node nNode,int pos){
        if (nNode==null) {
            for(int i=0;i<pos;i++) System.out.print("\t");
            System.out.println("*");
            return;
        }
        printTree(nNode.right,pos+1);
        for(int i=0;i<pos;i++) System.out.print("\t");
        System.out.println(nNode.data);
        printTree(nNode.left,pos+1);
}
Please refer to complete code here - http://ideone.com/Wz2Jhm