哈夫曼树

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

例如在传讯编码中,用到了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中,

哈夫曼树_第1张图片

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

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

哈夫曼树_第2张图片

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

最小的两个点是23,28.

哈夫曼树_第3张图片

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

最小的两个点是33,50.

哈夫曼树_第4张图片

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

最小的两个点是51,63.

哈夫曼树_第5张图片

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

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

哈夫曼树_第6张图片

此时F={114,170}。

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

哈夫曼树_第7张图片

你可能感兴趣的:(数据结构)