- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库第62章
6.3.2线索二叉树 为什么采用线索二叉树:对于n个结点的二叉树,在链式存储中的空指针域多达 n + 1 个,这样可以利用这些指针域来存放指向结点的直接前驱或者后继的指针. 线索:指向结点前驱和后继的指针 线索二叉树:每个结点添加了线索的二叉树. 线索化:对二叉树以某种次序遍历(如先序,中序,后序)使其变成线索二叉树的过程.实质是遍历一棵二叉树,在遍历过程中,检查当前结点的左右指针域是否是空,如果是空,将它们改为指向其前驱或者后继结点的线索. 线索二叉树 线索二叉树中结点的存储结构:在二叉树链式存储的结点结构中添加了两个标志域,这样,每个结构的存储结构变为: 其中:左边标志ltag={0,表示lchild指向左孩子,1 ,表示lchild指向直接前驱} 右标志rtag={0,表示rchild 指向右孩子,1,表示rchild 指向直接后继} 线索二叉树 1.线索化二叉树 线索二叉树 线索二叉树 线索二叉树 线索二叉树 线索二叉树 线索二叉树的操作 下面以中序线索二叉树为例,讨论线索二叉树的建立、线索二叉树的遍历以及在线索二叉树上查找前驱结点、查找后继结点、插入结点和删除结点等操作的实现算法 1.建立一棵中序线索二叉树 建立线索二叉树,或者说对二叉树线索化,实质上就是遍历一棵二叉树。在遍历过程中,访问结点的操作是检查当前结点的左、右指针域是否为空,如果为空,将它们改为指向前驱结点或后继结点的线索。为实现这一过程,设指针pre始终指向刚刚访问过的结点,即若指针p指向当前结点,则pre指向它的前驱,以便增设线索。 另外,在对一棵二叉树加线索时,必须首先申请一个头结点,建立头结点与二叉树的根结点的指向关系,对二叉树线索化后,还需建立最后一个结点与头结点之间的线索。 下面是建立中序线索二叉树的递归算法,其中pre为全局变量 int InOrderThr(BiThrTree *head,BiThrTree T) {/*中序遍历二叉树T,并将其中序线索化,*head指向头结点。*/ if (!(*head =(BiThrNodeType*)malloc(sizeof(BiThrNodeType)))) return 0; (*head)-ltag=0; (*head)-rtag=1; /*建立头结点*/ (*head)-rchild=*head; /*右指针回指*/ if (!T) (*head)-lchild =*head; /*若二叉树为空,则左指针回指*/ else { (*head)-lchild=T; pre= head; InThreading(T); /*中序遍历进行中序线索化*/ pre-rchild=*head; pre-rtag=1; /*最后一个结点线索化*/ (*head)-rchild=pre; } return 1; } 中序遍历进行中序线索化 函数 void InTreading(BiThrTree p) {/*中序遍历进行中序线索化*/ if (p) { InThreading(p-lchild); /*左子树线索化*/ if (!p-lchild) /*前驱线索*/ { p-ltag=1; p-lchild=pre; } if (!pre-rchild) /*后继线索*/ { pre-rtag=1; pre-rchild=p; } pre=p; InThreading(p-rchild); /*右子树线索化*/ } } 2.在中序线索二叉树上查找任意结点的中序前驱结点 对于中序线索二叉树上的任一结点,寻找其中序的前驱结点,有以下两种情况: (1)如果该结点的左标志为1,那么其左指针域所指向的结点便是它的前驱结点; (2)如果该结点的左标志为0,表明该结点有左孩子,根据中序遍历的定义,它的前驱结点是以该结点的左孩子为根结点的子树的最右结点,即沿着其左子树的右指针链向下查找,当某结点的右标志为1时,它就是所要找的前驱结点 在中序线索二叉树上寻找结点p的中序前驱结点的算法如下 BiThrTree InPreNode(BiThrTree p) {/*在中序线索二叉树上寻找结点p的中序前驱结点*/ BiThrTree pre;
您可能关注的文档
- 高铁工程-高铁经济可行性分析.ppt
- (北师大版)六年级数学下册课件比例尺3.ppt
- 黄崇庭-生化分析仪原理-比色法(朗伯-比尔定律.ppt
- (课件1)181.1勾股定理.ppt
- 《学案导学设计》2013-2014学年高中数学北师大版必修二配套备课资源简单多面体.ppt
- 《网页设计与制作》第三章:插入网页基本元素1.ppt
- 《学案导学设计》2013-2014学年高中数学人教b版选修1-1椭圆的几何性质(一).ppt
- 一年级下册《20以内的退位减法整理和复习》课件.ppt
- 七年级数学上册432角的比较和运算课件人教新.ppt
- 七年级上数学第三章复习课件.ppt
- 2025年昭通辅警招聘考试真题含答案.docx
- 2026年甘肃省长城建设集团有限责任公司招聘35人笔试备考试题(浓缩300题)附答案.docx
- 幼儿生活融合课程的教研机制(课件PPT).pptx
- 2025年长阳土家族自治县市场监管局下属事业单位招聘笔试参考题库附答案.docx
- 2025年阿合奇县科技局下属事业单位招聘笔试参考题库附答案.docx
- 2025福建漳州漳浦金瑞集团招聘20人笔试备考试题附答案.docx
- 2025年陆良县效能服务中心招聘笔试参考题库附答案.docx
- 2025年顺平县市场监管局下属事业单位招聘笔试模拟试题附答案.docx
- 2025年延边朝鲜族自治州辅警协警招聘考试真题新版.docx
- 2025年南昌辅警招聘考试题库含答案.docx
原创力文档


文档评论(0)