ImageVerifierCode 换一换
格式:PPT , 页数:19 ,大小:569KB ,
资源ID:2568634      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2568634.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第12讲线索二叉树_精品文档.ppt)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第12讲线索二叉树_精品文档.ppt

1、1 1一、线索二叉树一、线索二叉树定义:线索、线索化、线索二叉树定义:线索、线索化、线索二叉树 在一个在一个n结点的链式存储二叉树中,有结点的链式存储二叉树中,有n+1个指个指针域是空指针域,可以把每个空指针域用于存放分针域是空指针域,可以把每个空指针域用于存放分别指向某种遍历次序的前趋和后继结点的指针。别指向某种遍历次序的前趋和后继结点的指针。在结点的空指针域中存放的该结点在某遍历次在结点的空指针域中存放的该结点在某遍历次序下的前趋结点和后继结点的指针序下的前趋结点和后继结点的指针叫做线索叫做线索。2 2遍历二叉树的结果是,遍历二叉树的结果是,求得结点的一个线性序列求得结点的一个线性序列AB

2、CDEFGHK先序序列先序序列 A B C D E F G H K中序序列中序序列 B D C A H G K F E后序序列后序序列 D C B H K G F E A3 3指向该线性序列中的指向该线性序列中的“前驱前驱”和和 “后继后继”的指针,称作的指针,称作“线索线索”与其相应的二叉树,与其相应的二叉树,称作称作 “线索二叉树线索二叉树”包含包含 “线索线索”的存储结构,的存储结构,称作称作 “线索链表线索链表”A B C D E F G H K D C B E 4 4定义:线索、线索化、线索二叉树定义:线索、线索化、线索二叉树 把某结点原来空的左(右)指针域用于存把某结点原来空的左(

3、右)指针域用于存放指向其前趋(后继)结点的指针,也叫放指向其前趋(后继)结点的指针,也叫左左(右)线索(右)线索。对一个二叉树中的所有结点的空指针域按对一个二叉树中的所有结点的空指针域按照某种遍历次序加线索的过程叫作照某种遍历次序加线索的过程叫作线索化线索化,被,被线索化了的二叉树称作线索化了的二叉树称作线索二叉树。线索二叉树。一、线索二叉树一、线索二叉树5 5增加两个标志域:增加两个标志域:0 leftChild域指示结点的左孩子域指示结点的左孩子1 leftChild域指示结点的前驱域指示结点的前驱0 rightChild域指示结点的右孩子域指示结点的右孩子1 rightChild域指示结

4、点的后继域指示结点的后继 leftTag =rightTag=leftChild leftTag data rightTag rchildChild一、线索二叉树一、线索二叉树6 6中序线索二叉树:中序线索二叉树:图中的虚线箭头即为新加上的线索。图中的虚线箭头即为新加上的线索。一、线索二叉树一、线索二叉树7 7后序序列后序序列 D B E C A前序序列前序序列 A B D C E一、线索二叉树一、线索二叉树8 8带表头结点的中序线索二叉树带表头结点的中序线索二叉树一、线索二叉树一、线索二叉树9 9实战:实战:1、对于下图二叉树,画出其前序线索二叉树、对于下图二叉树,画出其前序线索二叉树、中序

5、线索二叉树和后序线索二叉树。中序线索二叉树和后序线索二叉树。A A E E D D C C B B F F G G H H 2、n个结点的线索二叉树上含有线索数为()个结点的线索二叉树上含有线索数为()A 2n B n-1 C n+1 D n1010(1)中序线索化中序线索化对一个二叉树进行中序线索化的算法对一个二叉树进行中序线索化的算法基本思想基本思想是:是:一边中序遍历一边建立线索。一边中序遍历一边建立线索。a)若访问结点的左孩子结点为空,则建立若访问结点的左孩子结点为空,则建立前趋线索前趋线索;b)若右孩子结点为空,则建立若右孩子结点为空,则建立后继线索后继线索。为此附设一个指针为此附设

6、一个指针pre始终指向刚刚访问过的结始终指向刚刚访问过的结点,而用指针点,而用指针cur指示当前正在访问的结点。指示当前正在访问的结点。pre的初始值为的初始值为NULL。一、线索二叉树一、线索二叉树1111中序线索化算法中序线索化算法一、线索二叉树一、线索二叉树void InThreadHelp(ThreadBinTreeNode*cur,ThreadBinTreeNode*&pre)if(cur!=NULL)if(cur-leftTag=CHILD_PTR)InThreadHelp(cur-leftChild,pre);if(cur-leftChild=NULL)cur-leftChild

7、=pre;cur-leftTag=THREAD_PTR;elsecur-leftTag=CHILD_PTR;1212中序线索化算法中序线索化算法一、线索二叉树一、线索二叉树if(pre!=NULL&pre-rightChild=NULL)pre-rightChild=cur;pre-rightTag=THREAD_PTR;else if(pre!=NULL)pre-rightTag=CHILD_PTR;pre=cur;if(cur-rightTag=CHILD_PTR)InThreadHelp(cur-rightChild,pre);1313(2)中序线索树求后继结点中序线索树求后继结点在中序

8、遍历线索树过程中,按下述两条原则即可在中序遍历线索树过程中,按下述两条原则即可找到后继结点:找到后继结点:a)如果某结点的如果某结点的右线索标志域为右线索标志域为1,说明其右指针域,说明其右指针域是线索,这个线索所指的即是该结点的后继结点;是线索,这个线索所指的即是该结点的后继结点;b)如果某结点的如果某结点的右线索标志为右线索标志为0,则其右指针域是指,则其右指针域是指向右儿子结点的指针,由此结点的右儿子结点起按左向右儿子结点的指针,由此结点的右儿子结点起按左指针域指针逐结点向左查找,一直找到左线索标志域指针域指针逐结点向左查找,一直找到左线索标志域为为1的结点,即是该结点的后继结点。的结点

9、,即是该结点的后继结点。一、线索二叉树一、线索二叉树1414(3)中序线索树求前趋结点中序线索树求前趋结点找前趋结点相应的原则如下:找前趋结点相应的原则如下:a)如果某结点的如果某结点的左线索标志域为左线索标志域为1,说明其左指针域,说明其左指针域是线索,这个线索所指的即是该结点的前趋结点;是线索,这个线索所指的即是该结点的前趋结点;b)如果某结点的如果某结点的左线索标志为左线索标志为0,则其左指针域是指,则其左指针域是指向左儿子结点的指针,由此结点的左儿子结点起按右向左儿子结点的指针,由此结点的左儿子结点起按右指针域指针逐结点向右查找,一直找到右线索标志域指针域指针逐结点向右查找,一直找到右

10、线索标志域为为1的结点,即是该结点的前趋结点。的结点,即是该结点的前趋结点。一、线索二叉树一、线索二叉树1515(4)中序遍历线索树中序遍历线索树 P217a)先由根结点指针找到根结点,从根结点起沿先由根结点指针找到根结点,从根结点起沿左指针逐结点一直向左查找,找到左线索标志左指针逐结点一直向左查找,找到左线索标志为为1的结点的结点(“最左最左”的结点的结点)即为遍历中需首先即为遍历中需首先访问的结点。访问的结点。b)由此结点开始,反复进行寻找后继结点的过由此结点开始,反复进行寻找后继结点的过程,并陆续访问这些结点,直至结束。程,并陆续访问这些结点,直至结束。一、线索二叉树一、线索二叉树161

11、6template void InThreadBinTree:InOrder(void(*Visit)(const ElemType&)if(r!=NULL)ThreadBinTreeNode *cur=root;while(cur-leftTag=CHILD_PTR)cur=cur-leftChild;中序线索二叉树的遍历算法中序线索二叉树的遍历算法1717while(cur!=NULL)(*visit)(cur-data);if(cur-rightTag=THREAD_PTR)cur=cur-rightChild;elsecur=cur-rightChild;while(cur-leftChild=CHILD_PTR)cur=cur-leftChild;中序线索二叉树的遍历算法中序线索二叉树的遍历算法1818本本 讲讲 小小 结结重点:重点:1、线索二叉树、线索二叉树难点:难点:1、线索二叉树的应用、线索二叉树的应用1919Homework:q 1、写写算法算法求中序线索二叉树中给定值为求中序线索二叉树中给定值为x的结点之后继结点,返回该后继结点的指针的结点之后继结点,返回该后继结点的指针。(请编程实现)(请编程实现)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1