- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 课件 第六章 树和二叉树
第六章 树和二叉树 学习要点 理解树的定义和基本术语,重点了解二叉树的定义、性质、存储结构; 掌握二叉树的遍历以及遍历的递归算法及它的典型运算; 理解线索化二叉树的特性以及寻找某结点的前驱和后继的方法; 理解树、森林和二叉树间的相互转换规则; 掌握哈夫曼树的实现方法,理解构造哈夫曼编码及带权路径长度的计算。 6.1 树的基本概念 6. 双亲结点:若结点X有子女Y,则X为Y的双亲结点。 7. 祖先结点:从根结点到该结点所经过分枝上的所有结点为该结点的祖先,如图中M的祖先有A,D ,H 。 8. 子孙结点:某一结点的子女及子女的子女都为该结点的子孙。如图中B的子孙有E,F,K,L。 9. 兄弟结点:具有同一个双亲的结点,称为兄弟结点。如图中B,C,D互为兄弟。 10. 层数:根结点的层数为1,其它结点的层数为从根结点到该结点所经过的分支数目再加1。 6.2 二叉树 树是一种分枝结构,在树的概念中,对每一个结点孩子的个数没有限制,因此树的形态多种多样,本章我们主要讨论一种最简单的树——二叉树。 二叉树是一种重要的树形结构,但不是前面所介绍的“树”的特例。因为二叉树既不是只有两个子树的树,也不是最多有两个子树的树。另外树和二叉树操作也有不相同的地方。 1.路径和路径长度: 在一棵树中,从一个结点往下可以达到的孩子或子孙结点之间的通路分支,称为路径。 通路中分支的数目称为路径长度。 若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。 2.结点的权及带权路径长度: 若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。 从根结点到该结点之间的路径长度与该结点的权的乘积称为结点的带权路径长度。 6.6 哈夫曼树及其应用 6.6.1 基本术语 3.树的带权路径长度: 树的带权路径长度规定为所有叶子结点的带权路径长度之和,记为wpl= ,其中n 为叶子结点数目,wi为第i 个叶子结点的权值,li 为第i 个叶子结点的路径长度。 4.哈夫曼树: 在一棵二叉树中,对于一组带有确定权值的叶子节点,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman tree)。 例 有4个结点,权值分别为7,5,2,4, 构造有4个叶子结点的二叉树 a b c d 7 5 2 4 WPL=7*2+5*2+2*2+4*2=36 d c a b 2 4 7 5 WPL=7*3+5*3+2*1+4*2=46 a b c d 7 5 2 4 WPL=7*1+5*2+2*3+4*3=35 7 7 5 5 2 2 4 4 6.4 线索二叉树 6.4.1 线索二叉树的定义 为了保留结点在某种遍历序列中直接“前驱”和直接“后继”的位置信息,可以利用二叉树的二叉链表存储结构中的那些空指针域来指示。这些指向直接前驱结点和指向直接后继结点的指针被称为线索(thread)。 在二叉树的先序、中序或后序遍历序列中两个相邻的结点互称为前驱与后继。 指向前驱或后继结点的指针称为线索。 加上线索的二叉链表表示的二叉树叫线索二叉树 对二叉树按某种遍历次序使其变为线索二叉树的过程叫线索化。 线索二叉树的结构 具有n个结点的二叉树若采用二叉链表存储结构,在2n个指针域中只有n-1个指针域是用来存储结点孩子的地址,而另外n+1个是空指针域。 利用某结点空的左指针域(lchild)指出该结点在某种遍历序列中的直接前驱结点的存储地址,利用结点空的右指针域(rchild)指出该结点在某种遍历序列中的直接后继结点的存储地址;对于那些非空的指针域,则仍然存放指向该结点左、右孩子的指针。 在存储中如何区别某结点的指针域内存放的是指针还是线索? 结构: 为每个结点增设两个标志位域ltag和rtag: ltag= 0 lchild指向结点的左孩子 1 lchild指向结点的前驱结点 rtag= 0 rchild指向结点的左孩子 1 rchild指向结点的前驱结点 rtag rchild data lchild ltag 结构示意图: A B C D E 先序序列:A B C D E 先序线索二叉树 A B D C E T 0 0 0 0 1 1 1 1 ^ 1 1 typedef struct BiThrNode { DataType data; struct BiThrNode *lchild,*rchild; int ltag, rtag; }BiThrNode,*BithrTree; A B C
您可能关注的文档
最近下载
- Unit 1 Let's Be Friends. 七年级英语上册课件(新仁爱科普版2024).pptx VIP
- 2023年金属冶炼(其他有色金属)安全生产管理人员考前冲刺备考300题(含答案).pdf VIP
- 开题报告:教育数字化战略行动背景下高职院校教学数字化转型研究.docx VIP
- 草烟原药生产装置改造项目 环评报告书.pdf VIP
- 初中因式分解100道计算题.doc VIP
- GeneXpert技术及原理.pptx VIP
- 单位公章-模板.doc VIP
- 2023年金属冶炼(其他有色金属)安全生产管理人员通关必做300题及答案.docx VIP
- 2024年春江苏开放大学现代城市社区建设概论050016大作业.docx VIP
- 2025-2026学年小学信息技术(信息科技)四年级上册湘科版(2024)教学设计合集.docx
文档评论(0)