赫夫曼树的建立、编码和译码
赫夫曼树的建立、编码(自底向上)和译码
!"
!"#
!"$ %&& 为存放赫夫曼树的数组
'!"()
建立赫夫曼树
"*+,-.
(/$,)
"$-0, 为叶子结点数," 为总结点数
$(!")"(("1,)2( ))分配内存单元,3 号单元未
用
($,/$11)给所有终端结点赋初值
45$45
45$3
45$3
45$3
($1,/$"11)给所有非终端结点赋初值
45$3
45$3
45$3
45$3
($1,/$"11)
-$3
(+$,+/+11)找到第一个双亲为 3 的结点,将序号给 ,
(4+5$$3)双亲为 3 的结点在 6(森林)中
,$++
(*$,*/*11)将权最小且双亲为 3 的结点的序号放到 , 中
(4*57$3)
(4,584*5),$*
(+$,+/,+11)找除 , 以外的另一个双亲为 3 的结点,将序号给 -
(4+5$$3)以 , 为界分两段找
-$++