有趣算法:Huffman Decoding:

介绍:

给固定长度的输入字符,根据他们的使用频率分配不固定长度的二进制编码.

例子:

如:字符串:"ABACA",其中A的频率是3,B和C的频率都是1
1.根据频率生成一颗Huffman Tree如下:
                {$,5}
               0/   \1
             {$,2}  {A,3}
            0/   \1
        {B,1}     {C,1}
2.那么给出任意的二进制编码后的数据,都可以解码生成原数据:
    假设:收到str='110001'这个数据.
    开始解码:
        '1':(i)从root向右子节点移动,获得A
        '1':同上(i)获得A
        '0':(ii)从root向左子节点移动,data=$,非叶子节点,继续判断下一位.
        '0':从(ii)判断向左子节点移动,得到B
        '0':(iii)从root向左子节点移动,data=$,判断下一位.
        '1':从(iii)向右子节点移动,data=C,获得C
    输出结果:AABC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值