代码改变世界

算法:最优二叉树(赫夫曼树)

2023-02-02 15:35  huoit  阅读(556)  评论(0)    收藏  举报

概念

最优二叉树就是带权路径最小的树;

带权路径值(WPL)=权值1*路径长度1+……

 

示例:如果字符出现频率如下;45,13,12,16,9,5 就是权值

 

 

 最优二叉树的构造过程

1. 先从中取最小权值的2个(5,9)组成一个树;(左小右大):如下

 

2.再从最新的序列: 45,13,12,16,14选择最小的两个(12,13)组成树:如下

 

 3.再从最新的序列:45,16,14,25取最小的两个(14,16)组成树:

 

 4.再从45,25,30选择最小的两个(25,30)组成树,直到剩余最后两个,最终如下:

 

路径长度

a的路径长度就是1,c,b,d的路径长度就是3,e,f的路径长度就是4

编码寻址

就是读取编码,按左0右1 寻址,直到寻到叶子节点:

序列“110001001101”编码应该为face