initial version
This commit is contained in:
45
tree.c
Normal file
45
tree.c
Normal file
@@ -0,0 +1,45 @@
|
||||
#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
|
Reference in New Issue
Block a user