求赫夫曼编码的算法
参考清华大学出版社出版的《数据结构(c语言版)》一书,在java下实现
//数据结构
class HuffmanNode{
public int weight;//权重
public int parent,lchild,rchild;//父节点、孩子节点在数组中的下标位置 public HuffmanNode(int weight,int parent,...
分类:
编程语言 时间:
2015-03-31 22:21:23
阅读次数:
306
最优二叉树(赫夫曼编码)最优二叉树是带权路径长度最短的二叉树。构造最优二叉树的方法如下:(1)将每个带有权值的节点作为一颗仅有根节点的二叉树,树的权值作为节点的权值(2)将其中两棵权值最小的树组成一棵新的二叉树,新树的权值就是两棵树的权值之和;(3)重复(2),直到所有结点都在一棵二叉树上最优二叉树...
分类:
其他好文 时间:
2015-03-13 12:08:15
阅读次数:
225
概述
讨论赫夫曼编码问题,赫夫曼编码的思想就是变长编码。变长编码就是让字符表中出现概率高的字符的编码长度尽可能小,而出现概率高的字符的编码长度相对较长。然后还要遵循前缀码的要求,就是任意一个编码都不是其他编码的前缀码,这样方便解码。
对于...
分类:
编程语言 时间:
2015-02-01 17:51:44
阅读次数:
257
上一篇,我们学习了二叉树的一些属性,定义,种类等。今天,我们主要学习它的存储结构、基本操作、与经典算法。二叉树之所以在数据结构中那么重要,正是因为它的存储结构、它的严谨规范。同时,也衍生了很多关于二叉树的经典算法,例如下面我们要学习的赫夫曼编码。不论,我们将来是做程序员、还是DBA。数据结构,是最....
分类:
其他好文 时间:
2014-10-15 19:22:31
阅读次数:
302
采用优先队列把一个普通线性表改造成赫夫曼树,再进行赫夫曼编码,得到一个同时记录了明文和对应编码的密码本。使用优先队列(最小堆)构造赫夫曼树是一种高效的方法,比每次都遍历整个线性表要快很多。我在构造密码本时确保密码本数组递增排序,这样每次插入新结点时可以折半查找插入,效率较高。有序的密码本在把明文编码成密文时也可以大大提高查找效率。...
分类:
其他好文 时间:
2014-09-28 16:14:43
阅读次数:
319
#include #include #include #include #pragma warning(disable:4996)typedef struct HuffmanTree{ int weight;//权值 int parent;//父节点 int left;//左子树 ...
分类:
其他好文 时间:
2014-07-23 12:49:56
阅读次数:
382
关于赫夫曼编码和赫夫曼树的相关知识可参考之前两篇文章(由二叉树构造赫夫曼树、赫夫曼编码)。本文介绍另一种构建赫夫曼树的方式,采用优先队列.
步骤:
1.首先我们需要统计不同字符出现的次数。一个字符出现的次数越多,说明其优先级越高,其赫夫曼编码应该越短;
2.将待编码的字符(即带权节点)存入优先级队列,优先级即字符出现的次数;
3.不断迭代队列,直到队列中剩下一个元素...
分类:
其他好文 时间:
2014-06-22 13:53:31
阅读次数:
255