1 #include <stdio.h> 2 #include <string.h> 3 #define N 50 //叶子结点数 4 #define M 2*N-1 //树中结点总数 5 typedef struct 6 { 7 char data[5]; //结点值 8 int weight; ...
分类:
编程语言 时间:
2020-04-29 12:51:44
阅读次数:
71
我们经常会用到文件压缩,压缩之后文件会变小,便于传输,使用的时候又将其解压出来。为什么压缩之后会变小,而且压缩和解压也不会出错。赫夫曼编码和赫夫曼树了解一下。 赫夫曼树: 它是一种的叶子结点带有权重的特殊二叉树,也叫最优二叉树。既然出现最优两个字肯定就不是随便一个叶子结点带有权重的二叉树都叫做赫夫曼 ...
分类:
编程语言 时间:
2020-04-29 00:58:50
阅读次数:
64
致读者 等几天在更新,最近有点吃不消了😝 完成数据结构 哈夫曼编码 实验部分代码。 函数功能 void insert(LIST head, LIST tmp) 有序插入结点 LIST find_and_insert(LIST head, LIST tmp) 弹出内部的结点,然后调用insert函数 ...
分类:
其他好文 时间:
2020-04-26 19:09:27
阅读次数:
119
赫夫曼编码 1. 基本介绍 赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),也称霍夫曼编码,是一种编码方式,属于一种算法 赫夫曼编码也是赫夫曼树在电讯通信中经典的应用 赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间 赫夫曼码是可变字长编码(VLC)的一种。Huff ...
分类:
编程语言 时间:
2020-04-24 19:57:51
阅读次数:
60
树的实际应用 赫夫曼树 1. 基本介绍 给定 n 个权值作为 n 个叶子结点,构造一棵二叉树, 若该树的带权路径长度(wpl)达到最小 ,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),也称霍夫曼树 赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近 2. 重要概念 路径 ...
分类:
编程语言 时间:
2020-04-24 19:52:14
阅读次数:
59
前言 哈夫曼编码是一种贪心算法和二叉树结合的字符编码方式,具有广泛的应用背景,最直观的是文件压缩。本文主要讲述如何用哈夫曼编解码实现文件的压缩和解压,并给出代码实现。 哈夫曼编码的概念 哈夫曼树又称作最优树,是一种带权路径长度最短的树,而通过哈夫曼树构造出的编码方式称作哈夫曼编码。 也就是说哈夫曼编 ...
分类:
编程语言 时间:
2020-04-17 15:17:31
阅读次数:
72
先给出哈夫曼树的定义:构造一颗包含n个节点的k叉树其中每个叶子节点都有权值w[i],要求最小化所有叶子节点的w[i]*deep[i]之和.该问题的解被称为k叉哈夫曼树. 先来说两个引理: 1.权值最小的节点深度必定最大. 证明:我们设x,y.使得w[x]>w[y].但deep[x]>deep[y]如 ...
分类:
其他好文 时间:
2020-04-16 20:55:30
阅读次数:
89
本文首先简要阐述哈夫曼算法的基本思想,然后介绍了使用哈夫曼算法进行文件压缩和解压缩的 处理步骤,最后给出了C语言实现的文件压缩和解压缩的源代码。 哈夫曼算法的主要思想是: ①首先遍历要处理的字符串,得到每个字符的出现的次数; ②将每个字符(以其出现次数为权值)分别构造为二叉树(注意此时的二叉树只有一 ...
分类:
编程语言 时间:
2020-03-21 12:53:41
阅读次数:
59
# 题意n堆果子,每一堆果子有重量,合并两堆果子小号的体力等于重量之和,所有的果子经过n-1次合并后就剩下一堆,最后消耗的总体力等于所有的和输出消耗的体力的最小值 # 题解即huffman树,用堆来实现,每次取最小的两个值加起来再存入堆之中,过程累计总和 1 #include <bits/stdc+ ...
分类:
其他好文 时间:
2020-03-21 09:55:38
阅读次数:
59
一、并查集的定义 1. 并查集是一种维护集合的数据结构,它的名字中“并”、“查”、“集”。分别取自Union(合并)、Find(查找)、Set(集合)。 合并:就是合并两个集合 查找:判断两个元素是否在一个集合 那么并查集是用什么实现的,就是一个数组, 对于同一个集合来说只存在一个根结点,且将其作为 ...
分类:
其他好文 时间:
2020-02-23 00:08:03
阅读次数:
94