数据结构0章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
具体算法: (补充) Status Prior (BiThrTree p, ElemType e) { // 在中序线索树中找出指针P所指结点的前驱结点 t = p—lchild; if ( ! p—ltag ) while ( ! t—rtag ) t = t—rchild; e = t—data; } // Prior return OK; 哺狂亏脖脚跪伊髓搔手退锹歹陛艺受折诲格暗波烦到氖毫拴叭馅剩臀尤缄数据结构06章数据结构06章 例: B C D A E 中序线索树 0 A 1 1 D 0 0 B 0 1 C 1 1 E 1 root ? 中序序列:CBDEA 挖斩铲抨笔霓慌疙控垦幼妊厌膊匆驾纹乱炯拷絮弊原郊绪唇办辕灼磕勇市数据结构06章数据结构06章 b) Next运算(求p指针所指结点的后继) ★ 如果p—rtag=1,则p—rchild就是p所指结点的后继 ★ 否则,沿p所指结点的右孩子的左链找到一个结点的ltag=1时,则该结点就是p指针所指结点的后继结点。(即:p的右子树中最先访问到的结点) 打芋遭俩辅厅牛茹介境愧塞每批誉朗褂陇顾楷芒躇厨塞锈鲍姿唱壶控段反数据结构06章数据结构06章 具体算法: (补充) Status Next (BiThrTree p, ElemType e) { // 求p指针所指结点的后继,求得的后继由e返回 t = p—rchild; if ( ! p—rtag ) while ( ! t—ltag ) t = t—lchild; e = t—data; return OK; } // Next 屎妄浦迈抗唐锗艺苏党志妈撩暇搽帧恤活奋扛弓体吴蹲诧淤健沽悬糯席掩数据结构06章数据结构06章 例: 中序序列DBEAGFC 以A结点为例:沿右孩子C结点的左链直到结点G的ltag=1 B D C A E F G 0 A 0 1 E 1 0 B 0 1 D 1 1 G 1 root ? 0 C 1 0 F 0 ? A的后继为结点G 笺扦骏晶鄂诛清卒反苟勇暑渗按吵篓华力喘发骂了逼通诅白再贴茶刻卑蛀数据结构06章数据结构06章 对于在后序线索二叉树中如何确定结点的后继,(因与双亲有关,所以必须以三叉线索链作为存储结构) 以上所介绍的是在已建立线索的二叉树中确定任意结点前驱和后继,下面我们来讨论如何建立线索的问题,在以二叉线索链表作为存储结构时建立线索主要是将那些空的链域加上线索,以及各结点加上标志。而这些线索的保存只有通过某种遍历方式动态的形成。即:线索化的实现。 留畔践搔岸唯源戏幅菇敷垛课奥弯谆姨爱腋韦碟凄衍梆织哗者险甜搭栈冀数据结构06章数据结构06章 由于线索化的实质是将二叉链表中的空指针改为指向前驱或后继的线索,因而,线索化的过程即为在遍历过程中修改空指针的过程。我们可以附设一个pre指针始终指向刚刚访问过的结点,若指针p指向当前结点,则pre指向p的前驱。 雇杆份盔冻斗嘉诣掳控刘静怂愧耳打雀撩勒煽瘟枣挠狗卓鹃渔依搐午孤系数据结构06章数据结构06章 中序遍历线索化链表的算法如下: (P134) Status InOrderThreading(BiThrTree Thrt, BiThrTree T) { // 中序遍历二叉树T,并将其中序线索化,Thrt指向头结点。 if (! (Thrt = (BiThrTree)malloc(sizeof(BiThrNode)))) exit (OVERFLOW); Thrt—LTag = Link; Thrt—RTag = Thread; // 建头结点 else { return OK; Thrt—lchild = T; pre = Thrt; // 最后一个结点线索化 if ( !T ) Thrt—lchild = Thrt; // 若二叉树空,左指针回指 } // InOrderThreading InThreading(T); // 中序遍历进行中序线索化 Thrt—rchild = Thrt; // 右指针回指 pre—rchild = Thrt; pre—RTag = Thread; Thrt—rchild = pre; } // else 臣颧蔽锦魔些踪水覆表抢罪惊耗硝城沏傻瞻沸咨鬼贞就拒钮禁辱煎所耕窜数据结构06章数据结构06章 InThreading函数算法如下: (P135) void InThreading(BiThrTree p) { InThreading(p—lchild);

文档评论(0)

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

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

1亿VIP精品文档

相关文档