版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、称采用这种结构存储的叫线索链表,二叉树的第三种存储方式。 其中指示前驱和后继的链域称为线索(也就是lchild 、 rchild 如果指向的不是左右孩子而是前驱和后继那么就称为线索)图中指向的是线索用虚线来画,否则用实线。 加上线索的二叉树称为线索二叉树 对二叉树以某种次序遍历使其变为线索二叉树的过程称为线索化 中序线索二叉树 先序线索二叉树 后序线索二叉树,整体结构:增设一个头结点,使其lchild指向二叉树的根结点,并将该结点作为遍历访问的第一个结点的前驱和最后一个访问结点的后继。,最后用头指针指向头结点,通过这个头指针找到该棵线索二叉树,0,0,0,0,1,1,1,1,1,1,0,1,6
2、.6.2 线索化二叉树 为了实现线索化二叉树,将前面二叉树结点的类型定义修改如下: typedef struct node ElemType data;/*结点数据域*/ int ltag,rtag; /*增加的线索标记*/ struct node *lchild;/*左孩子或线索指针*/ struct node *rchild;/*右孩子或线索指针*/ TBTNode;/*线索树结点类型定义*/,6.6.2 线索化二叉树 算法设计 typedef struct node ElemType data; int ltag,rtag; /增加的线索标记 struct node *lchild; s
3、truct node *rchild; TBTNode; TBTNode * CreateTBTNode(char *str) /建立二叉树(二叉链表的方式) TBTNode * CreaThread(TBTNode *b) /线索化二叉树,算法设计,TBTNode *CreaThread(TBTNode *b) /线索化二叉树,增加一个头结点,将整棵树作为他的左孩子,选择一种遍历方式,将二叉树线索化,生成某种访问顺序的线索化二叉树。,TBTNode *CreaThread(TBTNode *b) /*中序线索化二叉树*/ TBTNode *root; root=(TBTNode *)mall
4、oc(sizeof(TBTNode); /*创建头结点*/ root-ltag=0;root-rtag=1; root-lchild=b; pre=root; Thread(b); pre-rchild=root; pre-rtag=1; root-rchild=pre; return root; ,pre,1,Thread(p)算法思路是: *p 指向当前访问的结点 *pre指向前一访问的结点 采用中序遍历的方式 Thread (b-lchild); printf(%c ,b-data); Thread (b-rchild);,当前访问结点没有左孩子,就设置为线索,指向前驱 如果访问过的结点
5、没有右孩子,则设置为线索,指向后继,TBTNode *pre; /*全局变量*/ void Thread(TBTNode * /*递归调用右子树线索化*/ ,中序遍历(递归),6.6.3 遍历线索化二叉树 要遍历的第一个结点 依次找结点的后继 直到回到头结点,所有的问题归结为如何找后继结点?,D结点的后继:rtag=1,rchild指向后继,1,B结点的后继:rtag=0,rchild指向右孩子,从右孩子开始从左指针的方向找到第一个没有左孩子的结点S,if(p-rtag=1)p=p-rchild; else p=p-rchild; while(p-ltag=0) p=p-lchild; ,6.6.3 遍历线索化二叉树 从根结点开始找遍历的第一个结点,1,tb,P=tb-lchild,p,while(p-lchild!=tb) p=p-lchild;,6.6.3 遍历线索化二叉树 1、 要遍历的第一个结点 2、 依次找结点的后继 3、直到回到头结点,if(p-rtag=1)p=p-rchild; else p=p-rchild; while(p-ltag=0) p=p-lchild; ,void ThInOrder(TBTNode *tb) TBTNode *p=tb-lchild;/指向根结点 while(p-lchild!=tb) p=p-lchild; while (p!=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年数据分析师面试考核内容及参考答案
- 2026年电商运营必看网店运营主管面试问题及参考答案
- 2026年金融行业市场专员面试题及解析
- 2026年广州水务管网管理部经理管网管理知识竞赛题库含答案
- 2026年用友管理咨询顾问面试题集及答案解析
- 2026年软件开发工程师面试问题解析及参考答案
- 2025年萍乡市公安局公开招聘警务辅助人员备考题库含答案详解
- 2026年凭祥市应急管理局招聘编外人员招聘备考题库及1套完整答案详解
- 2026年造价工程师考试复习资料含答案
- 2026年风险评估与防范考试题
- 矿业企业精益管理实施方案与案例
- 2024年水利部黄河水利委员会事业单位招聘高校毕业生考试真题
- JSA临时用电作业安全分析表
- 内镜室医生护士职责
- 2023年新高考I卷英语试题讲评课件-2024届高考英语一轮复习
- 2015-2022年北京卫生职业学院高职单招语文/数学/英语笔试参考题库含答案解析
- 提高铝模板施工质量合格率
- MT/T 106-1996顺槽用刮板转载机通用技术条件
- GB/T 6672-2001塑料薄膜和薄片厚度测定机械测量法
- GB/T 4139-2012钒铁
- 精品课程《人文地理学》完整版
评论
0/150
提交评论