博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小蚂蚁学习数据结构(22)——哈夫曼编码的认识
阅读量:5933 次
发布时间:2019-06-19

本文共 674 字,大约阅读时间需要 2 分钟。

hot3.png

赫夫曼树(Huffman)——带权路径长度最短的树(又称最优树)

定义:

    路径:

        从树中一个结点到另一个结点之间的分支构成这两个结点间的路径

    路径长度:

        路径上的分支数

    树的路径长度:

        从树根到每一个结点的路径长度之和

    结点的带权路径长度:

        从该结点到树根之间的路径长度与结点上权的乘积

    树的带权路径长度:

        树中所有带权节点的路径长度之和

赫夫曼树的定义:

    有n个叶子结点,每个结点带有权值,构成一个带权路径最小的二叉树,就称为赫夫曼树。(自己定义的)

构造赫夫曼树的方法:

    构造赫夫曼树的步骤:

        1,给定的n个权值{w1,w2,w3……wn},构造n棵只有根结点的二叉树,令其权值为wj。

        2,在森林中选取两个根结点权值最小的树作为左右子树,构造一个新的二叉树,将新的二叉树根节点权值为其左右子树根结点权值之和

        3,在森林中删除这两个树,同时将新得到的二叉树加入森林中

        4,重复上述两步,直到只含有一棵树为止,这棵树就是赫夫曼树

赫夫曼编码:数据通信用的二进制编码

    思想:

        根据字符出现频率编码,是电文总长最短

    编码方法:

        根据上面创造赫夫曼树的步骤创建赫夫曼树,然后左分支为0,又分支为1。每个字符的编码就是从根到每个叶子的路径上得到的0、1序列。

    译码方法:

        从赫夫曼树树根开始,从待译码电文中逐位取码。若编码是0,则向左走;若编码是1,则像右走,一旦到达了叶子节点,则翻译出一个字符;再从根出发,直到电文结束。

        

学PHP的小蚂蚁 博客 

转载于:https://my.oschina.net/woshixiaomayi/blog/608181

你可能感兴趣的文章
位运算
查看>>
一个列表产生多少个含有两个元素的列表
查看>>
poj3468(线段树)
查看>>
hdu2151(递推dp)
查看>>
iOS 之 UITableView
查看>>
繁体简体转化_langconv.py
查看>>
boosting_bagging
查看>>
vue+vue-cli+vuex+vrouter 开发学习和总结
查看>>
PMI Link
查看>>
cf-Round551-Div2-D. Serval and Rooted Tree(DP)
查看>>
hdoj4734(数位dp优化)
查看>>
Python一切皆对象
查看>>
HDU 4686 Arc of Dream 矩阵快速幂
查看>>
语音处理
查看>>
putty
查看>>
Log4j
查看>>
Redis键值设计(转载)
查看>>
Java Utils工具类大全
查看>>
z-index解析
查看>>
POJ2348 UVa10368 HDU1525 Euclid's Game【博弈】
查看>>