哈夫曼树

来源:互联网 发布:淘宝网黑色双肩包 编辑:程序博客网 时间:2024/06/05 14:17

哈夫曼树的目的是构造带权路径最小的树,权值大的节点在上方,权值小的节点在下方。

例如在传讯编码中,用到了A,B,C,D,四种编码,每个编码使用的频率不一样,分别是0.1, 0.3, 0.4, 0.2。

那么可以解释为表示C的编码越短,总编码长度就越短。

例如在8各节点中,各自的权重是1,23,50,87,63,10,17,33.

构造哈夫曼树的步骤是:

1.从节点集F中选取两个节点值最小的节点,当做构建的左右子树,根节点的值是两个节点相加。

2.将新构成的树根节点的值加入F中,在F中删除步骤一选取的两个节点。

3.重复步骤一二,直到F中只剩下一个节点。


在例题中,首先选取节点1跟10,构成新的节点加入到F中,


此时F={23,50,87,63,17,33,11}。

此时最小的两个点是17,11.


此时F={23,28,33,50,63,87}。

最小的两个点是23,28.


此时F={33,50,51,63,87}

最小的两个点是33,50.


此时F={51,63,83,87}

最小的两个点是51,63.


此时F={83,87,114}。

最小的两个点是:83,87.


此时F={114,170}。

连接这两个点,哈夫曼树构造完成。


原创粉丝点击