#include #include #include #include "lceb.h" void gen_tree(seq, n, nb1, nb0) int *seq; int n; /* number of nodes */ int nb1; /* number of "1" */ int nb0; /* number of "0" */ { int i; if((nb1 + nb0) == 2*n) { /* end */ seq[2*n] = 0; printf("tree="); for (i=0; i<=2*n; ++i) printf("%d", seq[i]); putchar('\n'); return; } if(nb1 >= nb0 && nb1 < n) { seq[nb1+nb0] = 1; gen_tree(seq, n, nb1+1, nb0); } if(nb0 < nb1 && nb1 <=n) { seq[nb1+nb0] = 0; gen_tree(seq, n, nb1, nb0+1); } } #ifdef STANDALONE main(ac, av) int ac; char **av; { int n; int array[1024]; n=atoi(av[1]); gen_tree(array, n, 0, 0); exit(0); } #endif