#include <stdio.h> /*treeview打印二叉树型结构,d1为每行前面的空格数,d2为元素间的空格数 n为每次打印的元素 每层的前面空格数等于它下一层的中间空格数 最多可打印6层*/ void treeview(int d1,int d2,int n) { int i,j=1,k,count=1; if(n>0) { treeview(d2,d2*2+1,n-1);//每层递归前面空格数和中间空格数的关系 for(i=0;i<n-1;++i) count<<=1;//计算打印值每次循环次数,为2^n方 for(i=0;i<count>>1;++i)//打印斜杠"//" { for(j=0;j<d1;++j) putchar(' '); putchar('/'); for(j=0;j<d2;++j) putchar(' '); putchar('//'); for(j=0;j<d2-d1;++j) putchar(' '); } putchar('/n'); for(i=0;i<d1;++i) putchar(' ');//打印 每行前面的空白? for(i=0;i<count;++i)//打印 每行元素? printf("%d%*c",n,d2,' '); putchar('/n'); } } int main(void) { //从最后一层开始打印,最后一层的前面空格数为0,中间空格数为1,打印元素为6,层数也为6 treeview(0,1,6); getchar(); return 0; }