目录
哈夫曼概念:
引入:
由上述对比,为找到效率最高的判别树,引入了哈夫曼树(最优二叉树)的概念。
相关概念:
但路径长度最短的二叉树不一定是完全二叉树。
举例:
基本概念:
特点:
满二叉树不一定是哈夫曼树
哈夫曼树中权越大的叶子离根越近
具有相同带权结点的哈夫曼树不唯一
哈夫曼树的构造算法:
1.哈夫曼算法:
包含n个叶子结点的哈夫曼树中共有2n-1个结点。
哈夫曼树由两两合并得到的,所以n个结点一定合并n-1次,生成n-1个新结点。所以共有n+n-1=2*n-1个结点。
举例:
2.哈夫曼树算法实现:
举例:有n=8,权值为W={7,19,2,6,32,3,21,10},来构造哈夫曼树。
第一步:
第二步:在parent为0的里面再选择两个较小的,以此类推,每次都这样。
第三步:
第四步:
第五步:
依此类推,直到最后:(只剩下一个parent的值为0时)
实现:
初始化
进行n-1次合并
哈夫曼典型应用—哈夫曼编码
思想:
举例:
我们可以看到没有前缀码。
产生的两大问题:
算法实现:
文件的编码和解码:
编码:
解码:
例如: