版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浅谈线索二叉树摘要:数据结构中二叉树有很多的遍历算法,但本质都是将属性结构转换为线性序列,简化问题。在遍历序列中,每个节点都有自己的前驱和后去,但在二叉树遍历过程中寻求答案却因为时间复杂度等因素使操作效率低下。线索二叉树很好地解决了这一问题,本文是在二叉树的基础上加入线索二又树实现数据的快速可操作性。关键词:数据结构;线索二叉树;应用前言为了实现在遍历序列中快速查找节点的前驱、后继,利用二叉链表中空的指针域,指向结点在遍历序列中的前驱、后继,这些指向前驱、后继的指针就是线索。1、数据结构数据结构起源于程序设计,主要是计算机中数据的组织方式、存储结构和处理方法。在程序的编程中,写一个“好”的程序,就是要选择一个合理的数据结构和算法。数据的逻辑结构常用结构图来描述,将每一个数据元素看做一个结点,在计算处理数据的时候,算法同样很关键。一种算法的有穷性,必须对任何合法的输入在执行有穷之后结束,并且每1步都在有穷时间内完成。树形结构就是用于有层次关系的数据表示,表达大多数问题求解的思路,而二叉树的结点数和深度,为二叉树存储结构的选择提供了预备知识和思考线索。线索二又树借助二又树遍历的程序框架建立,通过函数将整个二叉树的线索化分解,求后继、前驱结点的算法增加数据操作的效率,缩短时间,提高数据的操作性。2、树的结构定义树形结构是信息的重要组织形式之一,树是一种数据结构,它是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像1棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:(1)每个结点有零个或多个子结点;(2)每一个子结点只有一个父结点;(3)没有前驱的结点为根结点;(4)除了根结点外,每个子结点可以分为多个不相交的子树。树的应用非常广泛,在程序设计中实现通用树的基本功能需要考虑很多功能,比如内存分配,添加节点,修改节点,删除节点,移动节点,遍历,查询,保存,读取问题。STL提供了丰富容器,非常遗憾地是没有提供树。不过使用STL可以非常方便地实现1棵通用树,完全可以避免直接使用内存分配函数和遍历释放内存。3、线索二又树的实现和建立运用Vc++编写一个程序实现前序线索二叉树、中序线索二叉树和后序线索二叉树,其中遍历要求用先左后右的递归或非递归算法来实现,通过线索二叉树提高数据操作效率。线索二叉树建立与中序遍历的c语言实现程序如下:#include<stdio.h>#include<malloc.h>Typedefenum{Link,Thread}PointerTag;//指针标志typedefintDataType;typedefstructBiThreTreef//定义结点元素PointerTagLTag,RTag;DataTypedata;struetBiThreTree*lehild,*rchild;}BiThreTree;BiThreTree*pre;//全局变量,用于二叉树的线索化BiThre-Tree*CreateTree()//按前序输入建立二叉树{BiThreTree*T:DataTypee:Scanf(“%d”,&e);If(e==0)T=NULL;Else{T=(BiThreTree*)malloc(sizeof(BiThreTree));T->data=e;T->LTag=Link;//初始化时指针标志均为LinkT->RTag=Link;T->lchild=CreateTree();T->rchild=CreateTree();}returnT:}voidInThread(BiThreTree*T){BiThreTree*p;p=T;if(p){InThread(p->lchild);if(!p->lchild){p->LTag=Thread;p->lchild=pre;}if(!pre->rehild){pre->RTag=Thread;pre->rchild=p;}Pre=p;InThread(p->rehild);}}BiThreTree*InOrderThrTree(BiThreTree*T)//中序线索化二叉树{BiThreTree*Thre;//Thre为头结点的指针Thre=(BiThreTree)malloc(sizeof(BiThreTree));对与数据线索二叉树的插征和性能进行了一个笼统的分析,线索二叉树通过设置Ltag,Rtag标志,并事先线索化来提高整个二叉树的遍历速度,是个典型的通过牺牲空间来提升速度例子。但是二叉树到底在空间与速度的博弈中占着怎样的地位,发生着怎样的功能,在实际的应用中空间值不值得需要深入地研究。以上如有不当之处,还恳请大家指正。参考文献:[1]吉根林林波数据结构教程(c++版)[MJ.北京:电
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论