赫夫曼树(最优二叉树)

原创 2015年07月06日 21:21:00

赫夫曼树又称为最优二叉树

基本的压缩编码方法–赫夫曼编码

路径长度

从树的一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称作路径长度.

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

赫夫曼算法

  1. 根据给定的n个权值{w1,w2,,……, wn}构成n棵二叉树的集合F={t1,t2,,,… tn},其中每棵二叉树ti中只有一个带权为wi根结点,其左右子树均为空.
  2. 在f中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和.
  3. 在f中删除这棵树,同时将新得到的二叉树加入f中
  4. 重复2和3步骤,知道f只含一棵树为止,这棵树就是赫夫曼树.

这里写图片描述

赫夫曼编码

假设要编码的字符集是{d1,d2,…,dn},各个字符在电文中出现的次数或频率集合为{w1,w2,…,wn},以d1,d2,,…,dn作为叶子结点,以w1,w2,…,wn作为相应叶子结点的权值来构造一棵赫夫曼树.规定赫夫曼树的左分支代表0,右分支代表1,则从根节点到叶子结点所经过的路径分支组成的0和1的序列便为该结点对应字符的编码

优点

随着字符的增加和多字符权重的不同,压缩强度会逐渐变大,压缩会更加明显.

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

构造最优二叉树-赫夫曼(Huffman)树算法

http://blog.163.com/zhoumhan_0351/blog/static/3995422720098275836215/ 构造最优二叉树-赫夫曼(Huffman)树算法   ...

6.6.1最优二叉树(赫夫曼树)

6.6.1最优二叉树(赫夫曼树)

数据结构学习笔记 --- 最优二叉树(赫夫曼树)

1. 引言 最优二叉树是带权路径长度最短的二叉树。根据结点的个数,权值的不同,最优二叉树的形状也各不相同。它们的共同点是:带权值的结点都是叶子结点。权值越小的结点,其到根结点的路...
  • whz_zb
  • whz_zb
  • 2012年02月28日 23:49
  • 1251

赫夫曼树(最优二叉树)-数据结构(16)

一、例子引出问题 参考书上P144-P149 。在我们计算成绩排名的时候,我们大部分人的成绩都在中等的,还有一小部分在极优和极差中,服从正态分布。因此出现了让有权重的树,为了将经常用到的判断放在前面...

[C/C++] 构造最优二叉树-赫夫曼(哈夫曼、Huffman)树算法实现

一、基本概念 1、赫夫曼(Huffman)树又称最优二叉树或最优搜索树,是一种带权路径长度最短的二叉树。在许多应用中,常常赋给树中结点一个有某种意义的实数,称此实数为该结点的权。从树根结点到该结点之...

满二叉树、完全二叉树、最优二叉树(赫夫曼树)、二叉排序树、二叉判定树

1、满二叉树 定义:除最后一层的结点外,每一层的所有结点都有两个子结点。 另外一个定义:深度为k且有2^k-1个结点的二叉树。   满二叉树是一颗树深度为h,最大层数为k,且深度与最大层数相同,即k=...

Huffman tree(赫夫曼树、霍夫曼树、哈夫曼树、最优二叉树)

Huffman tree(赫夫曼树、霍夫曼树、哈夫曼树、最优二叉树)flyfish 2015-8-1Huffman tree因为翻译不同所以有其他的名字 赫夫曼树、霍夫曼树、哈夫曼树 定义引用自严蔚...

数据结构--赫夫曼树(最优二叉村)

赫夫曼树,也称最优二叉树。树的带权路径长度为树中所有叶子节点的带权路径长度之和最短。书上举例多if条件嵌套判断,但由于各个条件出现的概率不一样,优化条件排布的先生顺序,程序运行的总路径长度也不一样,将...

数据结构—赫夫曼二叉树的应用

  • 2011年07月01日 10:19
  • 90KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:赫夫曼树(最优二叉树)
举报原因:
原因补充:

(最多只允许输入30个字)