首页| 行业标准| 论文文档| 电子资料| 图纸模型
购买积分 购买会员 激活码充值

您现在的位置是:团子下载站 > 电源技术 > C语言

C语言

  • 资源大小:25KB
  • 上传时间:2021-10-25
  • 下载次数:0次
  • 浏览次数:38次
  • 资源积分:1积分
  • 标      签: C语言

资 源 简 介

2-8   给定一棵二叉树的前序序列pre[low.1.hign1]和中序序列in[low2..hign2],试以二叉链   #include《stdio.h》   #include《stdlib.h》   #define size 100   typedef struct node//定义结点   {   char data;   struct node *lchild,*rchild;   } JD,*BitTree;   int search(char ino[],char pre)//在中序序列中查找先序中该元素所在位置   {   int i=0;   while(ino[i]!=pre&&ino[i])   i++;   if(ino[i]==pre)   return i;   else   return -1;   }   void CrtBT(BitTree &T,char pre[],char ino[],int ps,int is,int n)/*递归算法构造函数,建立二叉链表*/   {   int k;   if(n==0)   T=NULL;   else   {   k=search(ino,pre[ps]);   if(k==-1)   puts(“error!”);   else   {   T=(JD*)malloc(sizeof(JD));   T-》data=pre[ps];   if(k==is)   T-》lchild=NULL;   else   CrtBT(T-》lchild,pre,ino,ps+1,is,k-is);   if(k==is+n-1)   T-》rchild=NULL;   else   CrtBT(T-》rchild,pre,ino,ps+1+(k-is),k+1,n-(k-is)-1);   }   }   }   //先序遍历   void PreOrder(BitTree T)   {   if(T)   {   printf(“%c”,T-》data);   PreOrder(T-》lchild);   PreOrder(T-》rchild);   }   }   //中序遍历   void InOrder(BitTree T)   {   if(T)   {   InOrder(T-》lchild);   printf(“%c”,T-》data);   InOrder(T-》rchild);   }   }   //后序遍历(左-》右-》根),   int PostOrder(BitTree T)   {   if(T)   {   PostOrder(T-》lchild);   PostOrder(T-》rchild);   printf(“%c”,T-》data);   }   else   return 1;   }   void main()   {   char pre[size],ino[size];   puts(“输入先序序列:”);   gets(pre);   puts(“输入中序序列:”);   gets(ino);   BitTree T=NULL;   CrtBT(T,pre,ino,0,0,7);   printf(“先序遍历的二叉树:”);   PreOrder(T);   printf(“ ”);   printf(“中序遍历的二叉树:”);   InOrder(T);   printf(“ ”);   printf(“后序遍历的二叉树:”);   PostOrder(T);   printf(“ ”);   }
VIP VIP