哈夫曼树的基本概念
哈夫曼树的构造算法
哈夫曼树的构造示例
哈夫曼编码的基本概念
哈夫曼编码的程序实现
哈夫曼算法
如何构造哈夫曼树,哈夫曼在 1952 年最早给出了一个带有一般规律的算法,俗称哈夫曼算法,
-
根据 n 个给定的权值{w1 w2 w3 …} 构成 n 棵二叉树的森林F = {T1 T2 T3…} 其中 Ti 只有一个带权为 Wi 的根结点
构造森林全是根
。 -
在 F 中选取两颗根结点的权值最小的树作为左右子树,构造一棵新的二叉树,且新设置的二叉树的根结点的权值为其左右子树根结点的权值之和。
选用两小造新树
-
在 F 中删除这两颗树,同时将得到的二叉树加入森林中。
删除两小添新人
-
重复 2 3 直到森林中只有一棵树为止,这棵树即为哈夫曼树
重复2 3 剩单根
构造哈夫曼树示例
示例1
有四个结点,a b c d 权值分别为 7 5 2 4,构造的哈夫曼树的过程如下
示例2
有 5 个结点 a b c d e 权值分别为 7 5 5 2 4,构造的哈夫曼树为
总结
- 在哈夫曼算法中,初始时有
n
棵二叉树,要经过n-1
次 合并最终形成哈夫曼树 - 经过
n-1
次合并产生n-1
个新结点,且这n-1
个新结点都是具有两个孩子的分支结点。 - 哈夫曼树中共有 n+n-1 =
2n-1
个结点,且其所有的分支结点的度均不为1。