哈夫曼树的带权路径长度怎么求

如题所述

哈夫曼树的带权路径长度算法如下:

1.将w1、w2、?,wn看成是有n棵树的森林(每棵树仅有一个结点)。

2.在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和。

3.从森林中删除选取的两棵树,并将新树加入森林。

4.重复2、3步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。

哈夫曼树:

给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(HuffmanTree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

在计算机数据处理中,哈夫曼编码使用变长编码表对源符号(如文件中的一个字母)进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码。

反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度、期望值降低,从而达到无损压缩数据的目的。

以上内容参考:百度百科-哈夫曼树

温馨提示:答案为网友推荐,仅供参考