1、概念
-
哈夫曼树是带权路径长度最
-
-
-
短的树,也叫最优二叉树,不是满二叉树,是正则二叉树(也叫正规二叉树),其中只有度为0和度为2 的结点。
-
-
-
-
哈夫曼树只有度为2和叶子结点
-
-
-
2、哈夫曼树的构造
-
-
第一步:排序 2 4 5 9 第二步:挑出2个最小的 2 4 为叶子构造出 6 2 4 第三步:判断 6 不大于 5或9(剩余叶子中最小的2个)=》 同方向生长,得出: 11 6 5 2 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 13 6 7 最后得出 90 56 34 26 30 16 18 13 13 6 7 权值 219 90+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、哈夫曼的码字
-
只有叶子结点才能编码,因而有多少个叶子结点就有多少个码字。
-