哈夫曼树
来源:互联网 发布:孙悟空直销软件 编辑:程序博客网 时间:2024/06/10 12:00
1、概念
- 哈夫曼树是带权路径长度最
- 短的树,也叫最优二叉树,不是满二叉树,是正则二叉树(也叫正规二叉树),其中只有度为0和度为2 的结点。
- 哈夫曼树只有度为2和叶子结点
- 2、哈夫曼树的构造
- 转自https://zhidao.baidu.com/question/1924860156892725467.html
第一步:排序 2 4 5 9第二步:挑出2个最小的 2 4 为叶子构造出 62 4第三步:判断 6 不大于 5或9(剩余叶子中最小的2个)=》 同方向生长,得出: 11 6 52 4第四步:继续生长 20 11 9 6 5 2 4权值为 2*3+4*3+5*2+9*1=37也可以20+11+6=37例题:6、13、18、30、7、16排序 6 7 13 16 18 30 13 6 7 26 26大于16或18 =》分支生长 13 13 6 7 26 34 13 13 16 18 6 7此时最小的2个数为 26 30 得出 56 34 26 30 16 18 13 136 7最后得出 90 56 34 26 30 16 18 13 13 6 7 权值 21990+56+26+13+34 or 6*4+7*4+13*3+30*2+16*2+18*2
- 3、带权路径长度
所谓树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度(若根结点为0层,叶结点到根结点的路径长度为叶结点的层数)。
1.树的路径长度
树的路径长度是从树根到树中每一结点的路径长度之和。在结点数目相同的二叉树中,完全二叉树的路径长度最短。
2.树的带权路径长度(Weighted Path Length of Tree,简记为WPL)
结点的权:在一些应用中,赋予树中结点的一个有某种意义的实数。
结点的带权路径长度:结点到树根之间的路径长度与该结点上权的乘积。
树的带权路径长度(Weighted Path Length of Tree):定义为树中所有叶结点的带权路径长度之和,通常记为: 其中: n表示叶子结点的数目 wi和li分别表示叶结点ki的权值和根到结点ki之间的路径长度。 树的带权路径长度亦称为树的代价。3.最优二叉树或哈夫曼树 在权为wl,w2,…,wn的n个叶子所构成的所有二叉树中,带权路径长度最小(即代价最小)的二叉树称为最优二叉树或哈夫曼树。 【例】给定4个叶子结点a,b,c和d,分别带权7,5,2和4。构造如下图所示的三棵二叉树(还有许多棵),它们的带权路径长度分别为: (a)WPL=7*2+5*2+2*2+4*2=36 (b)WPL=7*3+5*3+2*1+4*2=46 (c)WPL=7*1+5*2+2*3+4*3=35 其中(c)树的WPL最小,可以验证,它就是哈夫曼树。 注意: ① 叶子上的权值均相同时,完全二叉树一定是最优二叉树,否则完全二叉树不一定是最优二叉树。 ② 最优二叉树中,权越大的叶子离根越近。 ③ 最优二叉树的形态不唯一,WPL最小
4、哈夫曼的码字
只有叶子结点才能编码,因而有多少个叶子结点就有多少个码字。
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- 哈夫曼树
- ionic Popup(弹窗)
- oracle 统计当年和当月数据
- IOS 后台运行定位介绍及解决办法
- arcgis for ios 去掉地图上的开发英文
- xUtils和FastJson获取和解析网络数据
- 哈夫曼树
- Java入门——方法
- 装饰者模式
- 「小程序」开发 指南(里面是小程序开发的各种论坛和文档)
- java定时器的几种用法
- 学习知识的小技巧
- SimpleDateFormat
- access函数
- Linux下Tomcat的使用与常见配置(CentOS7)-----Linux第二篇