构造口诀
每次选两个权最小结点,合并出新父结点,重复直到只剩一个
详细步骤
把所有带权叶子结点看成一棵只有根的二叉树,构成森林
从森林中选出两个权值最小的树
新建一个父结点,权值 = 两结点权值之和
两棵小树分别作为新父结点左、右孩子
把新树放回森林
重复 2~5,直到森林只剩一棵树
这棵树就是哈夫曼树
关键规则
左右孩子没有严格顺序,所以哈夫曼树不唯一
合并出新结点一定是分支结点,不带原始权
哈夫曼树绝对没有度为 1 的结点
n 个叶子结点 → 总结点数 = 2n - 1
举例(权:1,2,3,4)
选 1、2 → 合并 3
森林:3、3、4
选 3、3 → 合并 6
森林:4、6
合并 4、6 → 10
最终哈夫曼树完成
考点
n 个叶子,分支结点 = n-1 个
总结点 = 2n-1
不存在度为 1 结点
WPL 唯一最小,树形不唯一