数据结构二叉树的线索本.ppt
《数据结构二叉树的线索本.ppt》由会员分享,可在线阅读,更多相关《数据结构二叉树的线索本.ppt(20页珍藏版)》请在三一办公上搜索。
1、第六章 线索二叉树,本讲内容,1.线索的定义,2.线索二叉树,3.线索链表,4.线索化,5.线索二叉树的应用,为什么引入线索的概念,遍历二叉树是以一定规则将二叉树中结点排列成一个线性序列。,先序序列,中序序列,后序序列,遍历二叉树实质上对一个非线性结构进行线性化操作,使每一个结点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继。,当以二叉链表作为存储结构时,只能找到结点的左、右孩子信息,而不能直接得到结点在任一遍历序列中的直接前驱和直接后继信息,这种信息只有在遍历的动态过程中才能得到。,线索的定义,为了解决上述问题,二叉树采用二叉树链表作为存储结构时,为了不降低存储密度,
2、可以利用二叉链表中存储的空指针域来存放结点的直接前驱或直接后继信息,即指向直接前驱或直接后继。,结点没有左孩子,lchild指向直接前驱,前驱线索,结点没有右孩子,rchild指向直接后继,后继线索,线索二叉树,加上线索的二叉树称之为线索二叉树。为了区分方便,在线索二叉树中,指针用实线表示,线索用虚线表示。,中序线索二叉树,线索链表,二叉树的另一种链式存储结构。,约定结点,在二叉链表的结点中增加两个标志域,并作如下规定:,若该结点的左子树不空,则lchild域的指针指向其左子树,且左标志域的值为“指针ltag=0”;否则,lchild域的指针指向其“前驱”,且左标志的值为“线索ltag=1”。
3、,若该结点的右子树不空,则rchild域的指针指向其右子树,且右标志域的值为“指针rtag=0”;否则,rchild域的指针指向其“后继”,且右标志的值为“线索rtag=1”。,线索链表类型C描述,typedef struct BiThrNode ElemType data;struct BiThrNode*lchild,*rchild;/指针或线索 int ltag,rtag;/标志域,等于0为指针,等于1为线索 BiThrNode,*BiThrTree;,为方便起见,仿照线性表的存储结构,在二叉树的线索链表上也添加一个头结点,并令其lchild域的指针指向二叉树的根结点,其rchild域的
4、指针指向遍历时访问的最后一个结点;反之,令二叉树遍历序列的第一个结点的lchild域的指针和最后一个结点的rchild域的指针均指向头结点。,线索化,对二叉树以某种次序遍历使其变为线索二叉树的过程叫做线索化。,线索化的实质就是将二叉链表中的空指针改为指向直接前驱或直接后继的线索。,线索化的过程即为在遍历的过程中修改空指针的过程,即在“访问根结点”处进行加线索的改造,就可实现前序、中序和后序的线索化。,线索化分类,前序线索化,中序线索化,后序线索化,中序线索化举例,A,B,D,E,G,C,F,H,中序遍历序列:DBEGAFHC,NULL,NULL,方法:在遍历过程中修改空指针或先写出遍历序列,标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 二叉 线索

链接地址:https://www.31ppt.com/p-3787990.html