大作业线索化二叉树秦博纯.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构作业(2) 年级: 2004 级(2)班 专业: 计算机科学与技术专业学号: 200431500066 姓名: 秦博纯 mainCreateT main CreateT DispT… Thread CreaT… ThIn 编写一个程序实现中序线索化二叉树,给出线索中序序列,并以图所示的二叉树 b 对程序进行验证。 解:本项目proj7_5 的组成结构如图所示,图中方框表示函数,方框中指出函数名,箭头方向表示函数间的调用关系,虚线方框表示文件的组成,即指出该虚线方框中的函数存放 在哪个文件中。 可以得到如下exp7_5.cpp 文件,其中包含如下函数。CreateTBTNode(TBTNode *b): 输出含空线索域的二叉树。Thread(TBTNode *p):由 CreatThread()调用,对二叉树进行中序线索化。CreaThread(TBTNode *b):中序线索化二叉树。 ThInOrder(TBTNode *tb):中序线索化二叉树中实现中序遍历。这些函数代码如下(设计思路详见代码中的注释): Proj7_5 项目的程序结构图 Proj7_5 Proj7_5 项目组成 源程序如下: #includestdio.h #includemalloc.h #define MaxSize 100 typedef char ElemType; typedef struct node { ElemType data; int ltag,rtag; struct node *lchild; struct node *rchild; }TBTNode; void CreateTBTNode(TBTNode *b,char *str) { TBTNode *St[MaxSize],*p=NULL; int top=-1,k,j=0; char ch; b=NULL; ch=str[j]; while(ch!=\0) { switch(ch) { case (:top++;St[top]=p;k=1;break; case ):top--;break; case ,:k=2;break; default:p=(TBTNode *)malloc(sizeof(TBTNode)); p-data=ch;p-lchild=p-rchild=NULL; if(b==NULL) b=p; } j++; ch=str[j]; } } else { }  switch(k) { case 1:St[top]-lchild=p;break; case 2:St[top]-rchild=p;break; } void DispTBTNode(TBTNode *b) { if(b!=NULL) { printf(%c,b-data); if(b-lchild!=NULL||b-rchild!=NULL) { printf((); DispTBTNode(b-lchild); if(b-rchild!=NULL) printf(,); DispTBTNode(b-rchild); printf()); } } } TBTNode *pre; void Thread(TBTNode *p) { if(p!=NULL) { Thread(p-lchild); if(p-lchild==NULL) { p-lchild=pre; p-ltag=1; } else p-ltag=0; if(pre-rchild==NULL) { pre-rchild=p; pre-rtag=1; } else pre-rtag=0; pre=p; Thread(p-rchild); } } TBTNode *CreaThread(TBTNode *b) { TBTNode *root; root=(TBTNode *)malloc(sizeof(TBTNode)); root-ltag=0;root-rtag=1; root-rchild=b; if(b==NULL) root-lchild=root; else { }  root-lchild=b; pre=root; Thread(b); pre-rchild=root; pre-rtag=1; root-rchild=pre; return root; } void ThInOrder(TBTNode *tb) { TBTNode *p=tb-lchild; while(p!=tb) { while(p-ltag==0)p=p-lchild; printf(%c ,p-data); while(p-rtag==1p-rchild!=tb) { p=p-rchild; printf(%c ,p-data);

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档