什么是霍夫曼树_哈夫曼树只有度为0和度为2

什么是霍夫曼树_哈夫曼树只有度为0和度为2哈夫曼树(Huffman Tree,霍夫曼树,赫夫曼树)哈夫曼编码下面是一个简单的参考标准底稿,可以用C++实现输入HuffmanTree:“`cpp#include <iostream>#inclu

哈夫曼树(Huffman Tree,霍夫曼树,赫夫曼树)哈夫曼编码   下面是一个简单的参考标准底稿,可以用C++实现输入HuffmanTree:   “`cpp   #include <iostream>   #include <queue>   using namespace std;   struct TreeNode {   char data;   int weight;   TreeNode* left;   TreeNode* right;   TreeNode(char d, int w) : data(d), weight(w), left(NULL), right(NULL) {}   };   struct cmp {   bool operator()(TreeNode* a, TreeNode* b) {   return a->weight > b->weight;   }   };   TreeNode* createHuffmanTree(priority_queue<TreeNode*, vector<TreeNode*>, cmp>& pq) {   while (pq.size() > 1) {   TreeNode* left = pq.top(); pq.pop();   TreeNode* right = pq.top(); pq.pop();   int sum = left->weight + right->weight;   TreeNode* parent = new TreeNode(‘0’, sum);   parent->left = left;   parent->right = right;   pq.push(parent);   }   return pq.top();   }   int main() {   int n;   cin >> n;   priority_queue<TreeNode*, vector<TreeNode*>, cmp> pq;   for (int i = 0; i < n; i++) {   char c;   int w;   cin >> c >> w;   pq.push(new TreeNode(c, w));   }   TreeNode* root = createHuffmanTree(pq);   // do something with the Huffman tree   return 0;   }   “`   其中,`TreeNode` 结构体表示一个节点,`cmp` 结构体是一个比较器,用于优先队列的排序。`createHuffmanTree` 函数用于构建Huffman树,输入一个优先队列,输出一个根节点。`main` 函数中首先输入叶子节点的个数 `n`,然后逐个输入每个叶子节点的字符和权重,将它们放入优先队列中,最后调用 `createHuffmanTree` 函数构建Huffman树,并可以对树进行后续操作。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/18066.html

(0)
上一篇 2024年 9月 16日
下一篇 2024年 9月 16日

相关推荐

关注微信