哈夫曼树与树的应用内容摘要:
1,T2,… ,Tn}, 其中每一棵二叉树 Ti中只有一个带权为 wi的根结点 , 其左右子树为空。 ② 在 F中选取两棵权值最小的树作为左右子树以构造一棵新的二叉树,且新二叉树的根结点的权值为其左右子树根结点权值之和。 ③ 在 F中删除这两棵树,同时将新得到的二叉树加入 F中。 ④ 重复 (2)和 (3),直到 F中只含一棵树为止。 Hu Junfeng 16 哈夫曼树的构造过程 6 12 2 3 2 3 5 6 12 2 3 5 6 11 12 2 3 5 6 11 12 23 4棵只有根的二叉树 3合并得到 3棵二叉树 6合并得到 2棵二叉树 1 12合并得到 1棵二叉树 左右选择不同,得到的 HuffMan树形态不同,但 WPL相同。 Hu Junfeng 17 哈夫曼树的存储实现 • 存储结构可以有多种,如二叉链表、三叉链表等。 下面给出一种顺序结构 (一维数组),结点结构: – ww: 以该结点为根的子树中所有外部结点的加权和。 – parent: 父结点在数组中的存储位置(下标),根无父,设为 1。 – llink: 左孩子存储位置,对于外部结点,无孩子,设为 1。 – rlink: 右孩子存储位置,对于外部结点,无孩子,设为 1。 ww parent llink rlink Hu Junfeng 18 哈夫曼树的表示 2 • 假定外部结点个数为 m,则内部结点个数必为 m1,因此最后得到的 HuffMan树必定有 2m1个结点。 因此,用 2m1个元素的一维数组就可以存储该 HuffMan树。 每个元素表示一个结点,前 m个存储外部结点,后 m1个用于内部结点。 • struct HtNode /*哈夫曼树结点的结构 */ { int ww。 int parent, llink, rlink。 }。 Hu Junfeng 19 哈夫曼树的表示 3 • struct HtTree /*哈夫曼树类型 */ { int m。 /*外部结点的个数 */ int root。 /* 哈夫曼树根在数组中的位置 */ struct HtNode *ht。 /*存放 2m1个结点的数组 */ }。 typedef struct HtTree *PHtTree。 /* 哈夫曼树类型的指针类型 */ struct HtTree /*哈夫曼树类型 */ { stru。哈夫曼树与树的应用
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
商务楼层岗位操作流程
匙交给客人 ( 15)负责复印齐种报表并于 08: 00前交行李组派送 ( 16)做好酒水消耗数量以及冰箱内的剩余酒水数 (17)日常的餐饮服务 18)协助高级接待员完成迎、送客梯服务 ( 19)充成当天的周期卫生工作 : 〔 20〕 参加交班会 ( 21)做好下午茶的准备工作 (22)统计早餐用餐人数并报告商务楼层收款员、 (
商品组合排面ppt,请点击下载-前言
2 第一层 ( 最底层 ) 1 排面的制作规则 排面规则 分类以纵向陈列,单品以横向陈列 分类陈列中,由最便宜到最贵的陈列,原则上是按照由下至上的顺序陈列 分类陈列中,由大体积到小体积的陈列,原则上是按照由下至上的方法陈列。 小分类 1 小分类 2 小分类 3 小分类 4 小分类 5 小分类 6 地板清洁剂 清洁剂 芳香剂 杀虫剂 洗衣用品 洗洁剂 1 2 3 4 5 6