基于huffman树的文件压缩项目
压缩原因 1.文件太大,节省空间 2.提高数据在网络上传输的效率 3.对数据起到保护作用---加密 文件压缩类型 无损压缩:源文件被压缩之后,可以通过解压缩还原成与源文件相同的格式 有损压缩:源文件被压缩之后,解压缩无法还原成与源文件相同,但识别其内容没有影响,多用于语音,图片,视频压缩 基于Huffman树的压缩如何实现 通过Huffman编码实现,字符一般都是以字节存储的,通过编码转换为二进制编码(1字节=8比特位) 首先,什么是Huffman树 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 例如:给定权值为1(A),3(B),5(C),7(D)四个节点,构建Huffman树 Huffman压缩原理 --基于Huffman编码 以字符串中每个字符出现的次数为权值构建Huffman树 从根节点开始,左分支为0,右分支为1,如上图 所有权值节点都在叶子节点位置,遍历每条到叶子节点的路径获取字符的编码 举个栗子:ABBBCCCCCDDDDDDD Huffman编码: A:100 B:101 C:11 D:0 原理就是这么简单,一个字符占一个字节,现在用二进制编码代替之后,一个字符只占三位,也就是说一个字节可以表示两三个字符,所以说一次压缩