一、哈夫曼树
(一)定义
树中所有叶结点的带权路径长度之和称为该树的带权路径长度,记为WPL,WPL最小的树称为哈夫曼树。
(二)构造
一句话记忆就是:不断找权值最小的两个结点进行结合,直至只剩一棵树。
(三)性质
从上述构造过程中可以看出哈夫曼树具有如下特点:
1)每个初始结点最终都成为叶结点,且权值越小的结点到根结点的路径长度越大。
2)设共n个结点,构造过程中共新建了n-1个结点(双分支结点),因此哈夫曼树的结点总数为2n-1。
3)每次构造都选择2棵树作为新结点的孩子,因此哈夫曼树中不存在度为1的结点。
二、哈夫曼编码
根据哈夫曼树,可以对树中叶子结点进行哈夫曼编码,即对各结点的左右分支标记为0、1,从根到叶子结点的路径上用分支标记组成的序列作为该叶结点字符的编码,即哈夫曼编码。
注:左分支和右分支究竟是表示0还是表示1没有明确规定,因此构造出的哈夫曼树并不唯一,但各哈夫曼树的带权路径长度WPL相同且为最优。此外,如有若干权值相同的结点,则构造出的哈夫曼树更可能不同,但WPL必然相同且为最优。
注意区分哈夫曼树的带权路径长度和加权平均长度:
哈夫曼树的带权路径长度(WPL)等于每个叶子结点值*对应路径长度的和;
哈夫曼树的加权平均长度等于带权路径长度/所有结点频次之和;
写在后面
这个专栏主要是我在学习408真题的过程中总结的一些笔记,因为我学的也很一般,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!
参考资料
[1]王道408教材(2025版)
[2]王道课程资料