46 lines
867 B
C
46 lines
867 B
C
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <malloc.h>
|
|
#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
|