哈夫曼树

来源:互联网 发布:孙悟空直销软件 编辑:程序博客网 时间: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、哈夫曼的码字

      • 只有叶子结点才能编码,因而有多少个叶子结点就有多少个码字。

0 0
原创粉丝点击