哈夫曼树及哈夫曼编码

转载于:https://blog.****.net/qq_28602957/article/details/71036402

如何构造哈夫曼树


下面我们以【5、8、4、11、9、13】为例来画出哈夫曼树(数字大小代表权重大小,越大的权重越大)

第一步:按从小到大排序。

【5、8、4、11、9、13】→【4、5、8、9、11、13】

第二步:选最小两个数画出一个树,最小数为4和5。

给定的4、5、8、9、11、13为白色, 红色的9为4+5,与给定的白9无关,新序列为:【红9(含子节点4、5)、8、9、11、13】

哈夫曼树及哈夫曼编码

之后一直重复第一、第二步:排序然后取两个最小值。实际就是一个递归过程

排序:

哈夫曼树及哈夫曼编码

取两个最小数8和9:

排序:

哈夫曼树及哈夫曼编码

取两个最小数9和11:

哈夫曼树及哈夫曼编码

排序,然后取两个最小数13和17:

哈夫曼树及哈夫曼编码

取两个最小数20和30:

哈夫曼树及哈夫曼编码