- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树和叉树D
《软件技术基础》(数据结构C++版)教案 信息工程系应用教研室 第6章 树和二叉树(Tree Binary Tree) 先介绍二叉树的典型应用 什么是平衡二叉树( 又称AVL 树)? 什么是二叉排序树? 什么是判定树? 什么是带权树? 6.5 Huffman树及其应用 一、 Huffman树(最优二叉树) 树的带权路径长度如何计算? 1. 构造Huffman树的基本思想: 2. 构造Huffman树的步骤(即Huffman算法): 具体操作步骤: step2:按左“0”右“1” 对Huffman树的所有分支编号 二、Huffman编码 如何编程实现Huffman编码? Huffman编码举例 w={ 7, 19, 2, 6, 32, 3, 21, 10 }在机内存储形式为: 小结:哈夫曼树及其应用 上机实验说明:设字符集为26个英文字母,其出现频度如下表所示。 本 章 小 结 * * 6.1 树的基本概念 6.2 二叉树 6.3 遍历二叉树和线索二叉树 6.4 树和森林 6.5 Huffman树及其应用 平衡树—— 排序树—— 字典树—— 判定树—— 带权树—— 最优树—— 由字符串构成的二叉排序树 特点:分支查找树(例如12个球如何只称3次便分出轻重) 特点:路径带权值(例如长度) 是带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。 特点:所有结点左右子树深度差≤1 特点:所有结点“左小右大” 性质: 所有结点左、右子树深度之差的绝对值 ≤ 1 若定义结点的“平衡因子” BF = 左子树深度 – 右子树深度 则:平衡二叉树中所有结点的BF ∈[ -1, 0, 1 ] (a) 平衡树 (b) 不平衡树 例:判断下列二叉树是否AVL树? 0 0 0 1 1 -1 -1 2 0 0 0 1 -1 (a) (b) 例:下列2种图形中,哪个不是二叉排序树 ? ----或是一棵空树;或者是具有如下性质的非空二叉树: (1)左子树的所有结点均小于根的值; (2)右子树的所有结点均大于根的值; (3)它的左右子树也分别为二叉排序树。 想一想:对它中序遍历之后是什么效果? 7 4 1 10 2 6 5 3 9 8 5 10 2 1 6 4 7 3 9 8 举例: 12个球如何用天平只称3次便分出轻重? 分析: 12个球中必有一个非轻即重,即共有24种“次品”的可能性。 每次天平称重的结果有3种,连称3次应该得到的结果有33=27种。 说明仅用3次就能找出次品的可能性是存在的。 思路: 首先,将12个球分三组,每组4个,任意取两组称。会有两种情况:平衡,或不平衡。 其次,一定要利用已经称过的那些结论;即充分利用“旧球”的标准性作为参考。 第1次:等分3组 第2次:3旧3新 第3次:1旧1新 ①—④ ⑤—⑧ 相等= 小于 大于 ①—③ ⑨—(11) 大于 相等= 小于 ⑤ ①—③ ④ ⑨—(11) ⑤ ①—③ ④ ⑨—(11) 大于 小于 相等= 大于 小于 相等= ① (12) 小于 (12)重 大于 (12)轻 ⑨ ⑩ 大于 小于 相等= (11) 重 ⑩ 重 ⑨重 ⑨ ⑩ 大于 小于 相等= (11) 轻 ⑩ 轻 ⑨轻 ⑥ ⑦ ⑧ 轻 ⑦ 轻 ⑥轻 …… ① ② …… 大于 小于 相等= ③ 重 ① 重 ②重 a b d c 7 5 2 4 即路径带有权值。例如: 一、Huffman树 二、Huffman编码 最优二叉树 Huffman树 Huffman编码 带权路径长度最短的树 不等长编码 是通信中最经典的压缩编码 路 径: 路径长度: 树的路径长度: 带权路径长度: 树的带权路径长度: Huffman树: 由一结点到另一结点间的分支所构成。 路径上的分支数目。 从树根到每一结点的路径长度之和。 结点到根的路径长度与结点上权的乘积(WPL) 若干术语: d e b a c f g 即树中所有叶子结点的带权路径长度之和 带权路径长度最小的树。 例如:a→e的路径长度= 树长度= 2 10 Huffman常译为赫夫曼、霍夫曼、哈夫曼等 Weighted Path Length WPL = ?wklk k=1 n a b d c 7 5 2 4 (a) c d a b 2 4 5 7 (b) b d a c 7 5 2 4 (c) 经典之例: WPL= WPL= WPL= Huffman树是WPL 最小的树 树中所有叶子结点的带权路径长度之和 36 46 35 例:设有4个字符d,i,a,n,出现的频度分别为7,5,2,4, 怎样编码才能使它们组成的报文在网络中传得最快? 法1:等长编
文档评论(0)