- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机软件基础(自考本科树)解析
四、树、森林和二叉树 1)树的孩子兄弟表示 口诀:竖线连接左孩子,横线连接亲兄弟。 例:将如图所示树,用树的孩子兄弟表示。 A B D C E F A B D C E F 3、孩子兄弟链式存储法 四、树、森林和二叉树 2)用链连接各节点。 A B D C E F 3、孩子兄弟链式存储法 A ^ B C D E F ^ ^ ^ ^ ^ ^ 存储 date 指向大孩子 指向下一个兄弟 四、树、森林和二叉树 1. 树变二叉树 step1:写出树的孩子兄弟表示; step2:将竖线变成左子树,横向变成右子树。 A B D C E F A B D C E F A B C D E F A 一、 树的存储结构 四、树、森林和二叉树 3. 树的遍历 树的遍历有:先序和后序 注意: 树的先序遍历结果与对应二叉树的先序遍历结果相同; 树的后序遍历结果与对应二叉树的中序遍历结果相同。 四、树、森林和二叉树 4. 森林变二叉树 step1: 把构成森林的每一棵树变成二叉树; step2: 依次把后一棵二叉树连在前一棵二叉树根的 右子树上。 M J K L G H I A B D C E F A B C D E F G H I J K L M 四、树、森林和二叉树 4. 森林变二叉树(续) A B C D E F J K L M G H I 四、树、森林和二叉树 5. 森林的遍历 森林的遍历有:先序和后序 注意: 森林的先序遍历结果与对应二叉树的先序遍历结果相同; 森林的后序遍历结果与对应二叉树的中序遍历结果相同。 例.(2010.4解答)已知下图所示的二叉树,要求: (1)将该二叉树还原成森林; (2)写出森林的先根遍历序列和后根遍历序列 a b d c g e f h i j 解(1)将该二叉树还原成森林; (2)写出森林的先根遍历序列和后根遍历序列 a b d g c e f h i j 解(1)将该二叉树还原成森林; a b d g c e f h i j a b d g c e f h i j 解(1)将该二叉树还原成森林; a b d g c e f h i j a b d g c e f h i j 解(2)先根遍历序列:abdgcefhij a b d c g e f h i j 后根遍历序列:bgdaecihjf 五、哈夫曼树及其应用 1. 几个基本术语 (1)第i个叶子节点的权值Wi:给第i个节点所赋予的 重要程度值; (2)第i个叶子节点的路径长度Li:从根到第i个节点 所经路径的段数; (3)第i个叶子节点的带权路径长度WPLi: WPLi=Wi×Li; (4)树的带权路径长度WPL:等于该树中所有叶子 的带权路径长度之和。 五、哈夫曼树及其应用 4 2 5 9 9 2 4 5 2 9 4 5 5 4 2 9 五、哈夫曼树及其应用 2.哈夫曼树 哈夫曼树:也称为最优二叉树,就是带权路径长度为 最小的二叉树。 3.根据已知树,求对应哈夫曼树的方法 step1:将该树的叶子权值由小到大进行排序; step2:从所排序中取出两个最小的权值 和 构造二叉树,该二叉树的根节点为W( ) step3:从权值序列中划去 和 。划去后,如果序列为空,说明所要求的二叉树已经构成;否则,将W加入权值序列中,重复step1~step3。 五、哈夫曼树及其应用 例:(09.4月)给定一组权值:4、1、12、2、10,构造对应的哈夫曼树(权值小的为左子树,权值大的为右子树),并求出该树的带权路径长度。 step1:按权值由小到大排序: 1 step2:取两个最小权值, 、 2 、 4 、 10 12 、 3 构建一颗二叉树 1 2 step3:从原序列中划去1和2 将3插入到序列中 3 step3:重复步骤1~3 4 7 7 10 17 12 17 29 五、哈夫曼树及其应用 4.哈夫曼树的性质 (1)给定权值树所对应的哈夫曼树不是唯一的,但是,该树的带权路径长度WPL肯定是唯一的; (2)权值越大的节点,距离根节点越近; (3)哈夫曼树中,不存在只有一个孩子的节点; (4)哈夫曼树的节点总数n:=2×叶子节点个数-1。 五、哈夫曼树及其应用 5. 哈夫曼编码 (1)定义:长度最小的二进制串电文编码。 (2)求哈夫曼编码的步骤: step1:构造哈夫曼树(依据:以电文中各字符出现的 次数为权值); step2:构造哈夫曼编码树(方法:在哈夫曼树左子树的边上添0,右子树的边上添1); step3:求各字符的哈夫曼编码(从根到各字符节点路径上的二进制序列); 五、哈夫曼树及其应用 例:(2008.04)假设字符a,b
文档评论(0)