- 浏览: 769172 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
Huffman树,又称最优二叉树,是一类加权路径长度最短的二叉树
路径:从树中一个结点到另一个结点之间的分支构成该两结点之间的路径
路径长度:路径上分支条数
路径:从树中一个结点到另一个结点之间的分支构成该两结点之间的路径
路径长度:路径上分支条数
#ifndef HUFFMAN_H #define HUFFMAN_H #include"MinHeap.h" class HuffmanNode{ public: float data; HuffmanNode *leftChild,*rightChild,*parent; HuffmanNode():leftChild(NULL),rightChild(NULL),parent(NULL){} HuffmanNode(float elem,HuffmanNode* left=NULL, HuffmanNode* right=NULL,HuffmanNode* pr=NULL) :data(elem),leftChild(left),rightChild(right),parent(pr){} bool operator<=(HuffmanNode& R){ return data<=R.data; } bool operator>(HuffmanNode& R){ return data>R.data; } }; class HuffmanTree{ public: HuffmanTree(float w[],int n); ~HuffmanTree(){ delete root; } protected: HuffmanNode* root; void deleteTree(HuffmanNode* t); void mergeTree(HuffmanNode& ht1,HuffmanNode& ht2,HuffmanNode*& parent); }; HuffmanTree::HuffmanTree(float w[], int n) { MinHeap<HuffmanNode> hp; HuffmanNode* parent,first,second,work; for(int i=0;i<n;++i){ work.data=w[i]; work.leftChild=NULL; work.rightChild=NULL; work.parent=NULL; hp.Insert(work); } for(int i=0;i<n-1;++i){ hp.RemoveMin(first); hp.RemoveMin(second); mergeTree(first,second,parent); hp.Insert(*parent); } root = parent; } void HuffmanTree::mergeTree(HuffmanNode &bt1, HuffmanNode &bt2, HuffmanNode *&parent) { parent = new HuffmanNode; parent->leftChild = &bt1; parent->rightChild = &bt2; parent->data = bt1.data+bt2.data; bt1.parent = bt2.parent = parent; } #endif // HUFFMAN_H
发表评论
-
时间复杂度推导
2012-06-05 22:57 9841.用常数1取代运行时间中的所有加法常数 2.在修改后的运行次 ... -
数据结构概论2
2012-06-04 22:19 810数据元素:组成数据的,有一定意义的基本单位,在计算机中通常作为 ... -
排序概念
2011-06-24 14:51 790数据表:待排序数据元素的有很集合 排序码:通常数据元素有多个 ... -
图的基本概念
2011-06-20 16:18 751完全图:n个顶点,n*(n-1)/2个边的无向图,就是无向完全 ... -
红黑树
2011-06-16 14:29 516红黑树: 1.根结点和所有的叶结点都是黑色 2.从根结点到叶结 ... -
链表反转
2011-06-12 18:03 1101template<typename T> v ... -
散列表(哈希表)
2011-06-09 09:55 1081散列表(hash table):是表示集合和字典的另一种有效方 ... -
跳 表
2011-06-08 11:12 805#ifndef SKIPLIST_H #define S ... -
字 典
2011-06-08 10:06 926字典:以集合为基础,并支持支持Member,Insert和Re ... -
LinkedSet
2011-06-07 13:08 925改了很久的bug #ifndef LINKEDSET_H ... -
bitset
2011-06-06 12:27 887bitSet.h #ifndef BITSET_H #d ... -
堆
2011-06-02 09:19 953在优先级队列的各种实现中,堆是最高效的一种数据结构 关键码: ... -
森 林
2011-06-01 11:09 603森林与二叉树互转,主要是子结点转左子树,兄弟结点转右子树 深 ... -
二叉树的链式实现
2011-05-31 11:24 1265binaryTree.h #ifndef LINKEDBI ... -
二叉树基本概念
2011-05-30 10:05 844一棵二叉树的结点的一个有限集合:该集合或者为空,或者是由一个根 ... -
树基本概念
2011-05-30 09:28 894结点(node):包含数据项及指向其他结点的分支。 结点的度( ... -
广义表
2011-05-27 10:57 936广义表的定义是递归的,因为在表的描述中又用到了表,允许表中有表 ... -
矩阵相关
2011-05-26 10:22 932矩阵:是一个具有m行n列的二维数组。 上三角矩阵:只存储对角 ... -
优先级队列
2011-05-21 11:24 604PQueue.h #ifndef PQUEUE_H #d ... -
链式队列
2011-05-20 12:05 830LinkedQueue.h #ifndef LINKEDQ ...
相关推荐
构建Huffman树的基本思想是:将频率最低的两个节点合并成一个新的节点,新节点的频率是这两个子节点的频率之和,然后将新节点插入到当前的节点集合中,重复此过程直到只剩下一个节点,即为Huffman树。 在C语言中...
Huffman树,也被称为哈夫曼树或霍夫曼树,是一种特殊的二叉树,用于在数据压缩领域实现高效的编码方法——Huffman编码。这种编码技术是基于频率的,能够为出现频率高的字符分配较短的编码,而为出现频率低的字符分配...
Huffman编码是一种高效的数据压缩方法,它基于字符出现频率构建一棵特殊的二叉树——Huffman树,以此来为每个字符分配唯一的二进制编码。在信息传输或存储时,使用这种编码可以显著减少数据量,因为频繁出现的字符...
Huffman树,又称最优二叉树,是一种带权路径长度最短的二叉树,由美国麻省理工学院的David A. Huffman在1952年提出,主要用于数据压缩。Huffman编码是一种可变长度的前缀编码,它是建立在Huffman树基础上的一种编码...
《Huffman树图形界面小程序详解》 在计算机科学领域,数据结构的学习至关重要,而压缩算法则是其中的一个重要分支。Huffman编码,又称霍夫曼编码,是一种无损数据压缩算法,利用了字符出现频率的不同来构造一棵特殊...
### 数据结构有关数和二叉树,树的遍历以及线索化,Huffman树及其应用 #### 一、树的基本概念 **树的定义与基本术语:** 树是一种非线性的数据结构,由一系列节点组成,这些节点之间通过边相连形成层次结构。一个...
哈夫曼树(Huffman Tree),也称为最优二叉树,是数据压缩中的一种关键数据结构,由哈夫曼在1952年提出。它是一种带权路径长度最短的二叉树,用于实现哈夫曼编码,这是一种高效的无损数据压缩方法。在哈夫曼编码中,...
C语言实现的Huffman树和Huffman编码生成的程序
用C++语言实现huffman树的源代码
本实验报告中,"【实验三】Huffman树及Huffman编码的算法实现"可能包含了详细的代码实现,展示了如何使用编程语言(如C++、Java或Python)来实现上述步骤。实验可能会包括测试不同频率分布的字符集,以及对比不同...
程序用于实现建立huffman树,以及实现其编码和解码的功能
Huffman树的生成和解码,二叉树形式
《Huffman树的表示及Huffman编码》 在数据压缩领域,Huffman编码是一种非常重要的无损数据压缩方法,由美国计算机科学家David A. Huffman在1952年提出。其核心思想是通过构建一棵特殊的二叉树——Huffman树(也称为...
关于Huffman树的编码问题,适合基础薄弱的学生转载
实验报告七:Huffman树与Huffman编码算法 Huffman编码是一种高效的无损数据压缩算法,由美国计算机科学家David A. Huffman在1952年提出。它利用字符出现频率来构建一棵特殊的二叉树——Huffman树,进而为每个字符...
**实验报告:Huffman树与Huffman编码算法** 在信息技术领域,数据压缩是至关重要的,尤其是在互联网通信中,为了高效地传输大量数据,压缩技术必不可少。Huffman编码是一种基于频率的无损数据压缩方法,由David A. ...
利用Huffman树实现对文件的无损压缩与解压,并且对Huffman树的创建也做了详细的说明与讲解,C语言实现的.....值得一看....
【Huffman树与Huffman编码】实验报告详细解析 实验标题:Huffman树与Huffman编码的算法实现 实验目标: 1. 理解Huffman树的构造原理及其编码应用。 2. 掌握Huffman树在数据压缩和通信中的实际操作过程。 实验要求...