第十周项目1(2)

来源:互联网 发布:mac屏幕最大化快捷键 编辑:程序博客网 时间:2024/06/07 04:06
  1. /*  
  2. 烟台大学计算机学院  
  3.   
  4. 文件名称:xiangmu.cpp  
  5.   
  6. 作者:常路  
  7.   
  8. 完成日期:2017年11月5日  
  9.   
  10. 问题描述:二叉树构造算法的验证 
  11.   
  12. 输入描述:无 
  13.   
  14. 输出描述:知先序中序构造二叉树结果 
  15.  
  16. 用到btree2.h算法库 
  17.   
  18. */   
  19.   
  20.   
  21.   
  22.   
  23. #include <stdio.h>  
  24. #include <malloc.h>  
  25. #include "../btree2.h"  
  26.   
  27. BTNode *CreateBT1(char *pre,char *in,int n)  
  28. {  
  29.     BTNode *s;  
  30.     char *p;  
  31.     int k;  
  32.     if (n<=0) return NULL;  
  33.     s=(BTNode *)malloc(sizeof(BTNode));     //创建二叉树结点*s  
  34.     s->data=*pre;  
  35.     for (p=in; p<in+n; p++)                 //在中序序列中找等于*ppos的位置k  
  36.         if (*p==*pre)                       //pre指向根结点  
  37.             break;                          //在in中找到后退出循环  
  38.     k=p-in;                                 //确定根结点在in中的位置  
  39.     s->lchild=CreateBT1(pre+1,in,k);        //递归构造左子树  
  40.     s->rchild=CreateBT1(pre+k+1,p+1,n-k-1); //递归构造右子树  
  41.     return s;  
  42. }  
  43.   
  44.   
  45. int main()  
  46. {  
  47.     ElemType pre[]="ABDGCEF",in[]="DGBAECF";  
  48.     BTNode *p;  
  49.   
  50.     p=CreateBT1(pre,in,7);  
  51.   
  52.     DispBTNode(p);  
  53.   
  54.   
  55.   
  56.   
  57.   
  58. }  
原创粉丝点击