数据结构与算法 (22).pdf
《数据结构与算法 (22).pdf》由会员分享,可在线阅读,更多相关《数据结构与算法 (22).pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第 7 章二 叉 树7.1 二叉树的基本概念7.2 二叉树的存储7.3 二叉树的遍历7.4 二叉树的创建7.5 线索二叉树7.6 哈夫曼树和哈夫曼编码提出的问题:如何查找二叉树中结点的前趋和后继。提出的问题:如何查找二叉树中结点的前趋和后继。解决的方法:解决的方法:1、遍历费时间2、增设前趋、后继指针域降低存储空间的利用率。3、利用二叉链表中的空指针域。237.5.1 线索二叉树的概念7.5.2 二叉树的线索化7.5.3 线索二叉树的运算7.5 线索二叉树如何利用二叉链表的空指针域?将空的左孩子指针域改为指向其前趋,空的右孩子指针域改为指向其后继这种指向前驱或后继的指针称为“线索”加上了线索
2、的二叉链表称为线索链表;相应的二叉树 称为线索二叉树4 线索二叉树的结点结构线索二叉树的结点结构typedeftypedef structstruct nodenodedatatypedatatype datadata;structstruct nodenode*lchildlchild,*,*rchildrchild;intint ltag,rtagltag,rtag;BiThrNodeBiThrNode,*BiThrTreeBiThrTree其中:其中:ltag,rtag为两个标志域为两个标志域ltag=0lchlch域指示结点的左孩子域指示结点的左孩子1lchlch域域指示结点的前驱指示
3、结点的前驱rtag=0rchrch域指示结点的右孩子域指示结点的右孩子1rchrch域指示结点的后继域指示结点的后继dataltagrtaglchildrchild56 二叉树的先序、中序、后序线索化将二叉树中每个结点中的空的左右孩子指针域分别修改为指向其给定顺序(先序、中序、后序)的前趋和后继结点。这样,每个结点的线索化操作应包括以下内容:(1)若左子树为空,则将其左孩子域线索化:左孩子指针lchild 指向其前趋,ltag 置1(2)若右子树为空,则将其右孩子域线索化:右孩子指针rchild 指向其后继,rtag 置1例:先序例:先序,中序和后序线索链表中序和后序线索链表A00B01C00
4、D10E10G11H11F11先序先序 ABDGCEHF7A00B01C00D10E10G11H11F11中序中序DGBAEHCF897.5.1 线索二叉树的概念 7.5.2 二叉树的线索化7.5.3 线索二叉树的操作7.5 线索二叉树在遍历过程中修改结点的空左、右指针域,保存当前访问结点的“前驱”或“后继”信息。遍历过程中,附设指针pre指向刚访问过的结点,p指向当前访问结点。即:pre是p的前驱 如何建立线索二叉树?1011主要步骤:对结点p的线索化分两步进行:当p 为当前结点时,可进行p的前趋线索化p-lchild=pre 当p为当前结点时,对其前趋pre的后继线索化pre-rchild
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法 22 数据结构 算法 22
限制150内