网站大量收购闲置独家精品文档,联系QQ:2885784924

树的详细介绍.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

5.4线索二叉树对任何一种数据结构,经常涉及到取前驱结点和后继结点的运算,对线性结构而言,由于其逻辑关系是顺序的,故其运算很容易,但对非线性结构并非易事。从上一节二叉树的遍历过程可知,二叉树的遍历实际上就是把非线性结构变为线性结构的过程,但这些信息只能在动态遍历时体现,如何保留结点在某种遍历中的前驱结点和后继结点的信息呢?一种简单的方法是另外增加一个线性表,存储遍历后的序列,但这需要额外地存储开销。实际上,具有n个结点的二叉树,其二叉链表中共有2n个指针域。由于除根结点外,对于每个结点都有一个指针指向该结点,因此实际只有n-1个指针域被使用,而另外n+1个指针域是空的,可以利用这n+1个空指针存放某种遍历方式下指向前驱结点和后继结点的指针,这种附加的指针称为线索,加上了线索的二叉树称为线索二叉树,把加上线索的过程称为二叉树的线索化。根据二叉树的不同遍历方法,可以分为前序线索二叉树、中序线索二叉树和后序线索二叉树3种。5.4.1线索二叉树的存储结构为了区分线索二叉树的指针与线索,需要在每个结点中增加两个标志位Lflag和Rflag,令:0Lflag是指针,指向结点的左孩子结点Lflag=1Lflag是线索,指向结点的前驱结点0Rflag是指针,指向结点的右孩子结点Rflag=1Rflag是线索,指向结点的后继结点增加了标志域的二叉树结构如图5.15所示。这时,线索二叉树结点的数据结构调整为:struetbtnode{ETData;intLflag,Rflagz;structbtnode*Lchild;structbtnode*Rchild;};对于同一棵二叉树,遍历的方法不同,得到的线索二叉树也不同。如图5.16所示为一棵二叉树相应的前序、中序和后序线索树。5.4.2二叉树的线索化由图5.13可知,为了将一棵二叉树线索化,只需在按某种遍历方法(这里以中序为例)线索化时,将访问子树的根结点用以下操作来代替:(1)若上次访问到的结点的右指针为空,则将其指向当前结点,并置右标志域为1;(2)若当前访问到的结点的左指针为空,则将其指向上次访问到的结点,并置左标志域为1。5.4.3线索二叉树的遍历对二叉树进行线索化后,如果需要再次遍历,只要根据遍历序列的线索进行即可,这里仍以中序线索二叉树为例进行说明:首先,从二叉树的根结点开始,沿左子树找下去,一直找到左标志域为1的结点(即叶子结点,也是线索化的第一个结点)。接着从该结点开始,依次查找中序序列的后继结点,其规则如下:(1)若当前结点的右标志域为1,说明指针是线索,则顺序访问线索所指向的下一个结点;(2)若当前结点的右标志域为0,说明指针是分支,则沿右子树的左指针进行有哪些信誉好的足球投注网站,一直找到左标志域为1且左指针值不为空为止,该结点即为当前结点的后继结点。线索二叉树的遍历是一种非递归算法,它不涉及堆栈的进栈与出栈操作,因而比递归算法节省内存空间,同时其时间复杂度与树的深度相关。对含n个结点的二叉树,在最坏情况下,时间复杂度为0(n)。5.5树和森林主要讨论树的存储结构以及树、森林与二叉树的转换关系5.5.1树的存储结构在实际应用中,人们曾使用很多种存储结构来表达一棵树,这里介绍几种常用的存储方法。1.双亲表示法在树中,每个结点的双亲是唯一的。利用这一性质,在存储每一结点信息的同时存储其双亲结点的信息,这可以用指针等动态链表的方式实现,但用顺序表来存储更方便,通常的做法是:开辟一块连续的存储空间(例如数组)存储结点信息,其中每个存储单元的结构形式如图5.17所示。这种结构中,双亲域用来存储双亲结点在数组中的位的存储结构置。这样结点的数据结构用C语言描述如下:#defineMAX100//树中结点的最大值TypedefstruetTnode{ETdata;intparent;}Tnode;这样,一棵树可以定义为:typedefstruet{TNodetree[MAX];intTreeNodeNUIEber;//结点数}ParentTree;根据定义,一棵树用MAX个上述结点的一维

文档评论(0)

+ 关注
实名认证
内容提供者

好文档 大家想

1亿VIP精品文档

相关文档