分类：电脑/网络-软件
问题：数据结构源程序建立二叉树，从序、先序遍历（用递归或非递归的方法都 
建立二叉树，从序、先序遍历（用递归或非递归的方法都可以）任务：要求能够输入数的各个节点，并能够输出用不同方法遍历的便利序列；分别建立二叉树存储结构的输入、输出层序遍历序列的函数、输出先续编历序列的函数；
回答：#include "std.h"#include "malloc.h"struct Bitree {               char nodes;         struct Bitree *lchild;         struct Bitree *rchild;     };struct node {               char this;         struct node *next;         };build( )     {     struct Bitree  *b,*bn;                   /*b指向二叉树,bn为操作数  */     struct node   *c,*cn;                   /*c放置节点,作为一个小的队列.操作cn*/                 int   i,j,k;                 char  no;                  i=1;          /*每层有i个节点*/     printf("now we'll build the binary tree,,in the process,if the node is not exist ,enter '#'.first enter a boot\n");  /*先输入根节点*/     c=(struct node *)malloc(sizeof(struct node));     b=(struct Bitree *)malloc(sizeof(struct Bitree));                 scanf("%c",&no);     c->this=no;     b->nodes=no;                 bn=b;                 do                 {                                                                                       j=2*i;  /*i的下一层有2i个节点,*/          for(k=1;k<=i;k++)                           {                                                          bn=c->this;        printf("the left child of %c:",c->this);                                                             scanf("%c",&no);                                                                                                     bn->lchild=(struct Bitree *)malloc(sizeof(struct Bitree));         bn->lchild->nodes=no;                     if (no=="#")                                                          {                                                              j=j-1;  /*如果节点的孩子为空,节点数-1*/         }                                                          else                                                          {                                                               cn->next=(struct Bitree *)malloc(sizeof(struct Bitree));              cn->next->this=no;              cn=cn->next;              };          printf("the right child of %c:",c->this);                                                            scanf("%c",&no);                                                            bn->rchild=(struct Bitree *)malloc(sizeof(struct Bitree));           bn->rchild->nodes=no;           if(no=="#")                                                            {                                                            j=j-1;                                                             }          else               {                                                                 cn->next=(struct Bitree *)malloc(sizeof(struct Bitree));                  cn->next->this=no;                cn=cn->next;               };         c=c->next;             };                                                  i=j;      }while(i!=0);     } firstorder(struct Bitree *n)      {                 printf("%c",n->nodes);                         if(n->nodes=="#")                              ;                         else           firstorder(n->lchild);           firstorder(n->rchild);     }main(){  struct Bitree *o;  build(o);  firstorder(o);}