当前位置: 首页 > news >正文

好的学习网站打广告个人站长和企业网站

好的学习网站打广告,个人站长和企业网站,ctoc网站有哪些,柳江网站开发哈夫曼树#xff08;Huffman Tree#xff09;是一种最优的二叉树#xff0c;常用于数据压缩#xff0c;如在 Huffman 编码中使用。它是根据字符出现的频率来构造的#xff0c;频率越高的字符越靠近树的根#xff0c;频率低的字符则在较深的节点上。其核心思想是通过构建一… 哈夫曼树Huffman Tree是一种最优的二叉树常用于数据压缩如在 Huffman 编码中使用。它是根据字符出现的频率来构造的频率越高的字符越靠近树的根频率低的字符则在较深的节点上。其核心思想是通过构建一颗最小堆或者优先队列来逐步合并最小的两个节点直到所有节点都合并成一颗哈夫曼树。  哈夫曼树的构建过程 统计频率首先统计每个字符出现的频率。构建最小堆将每个字符作为一个树的节点插入一个最小堆优先队列中。合并最小频率的节点每次从最小堆中取出两个频率最小的节点创建一个新节点其频率为这两个节点频率之和。然后将这个新节点插入回最小堆。重复步骤3直到堆中只剩下一个节点这个节点就是哈夫曼树的根节点 #include iostream #include queue #include vector #include unordered_map #include stringusing namespace std;// 哈夫曼树的节点 struct HuffmanNode {char ch; // 存储字符int freq; // 字符的频率HuffmanNode* left; // 左子树HuffmanNode* right; // 右子树// 构造函数HuffmanNode(char c, int f) : ch(c), freq(f), left(nullptr), right(nullptr) {}// 定义优先级队列的比较规则按频率最小的优先struct Compare {bool operator()(HuffmanNode* l, HuffmanNode* r) {return l-freq r-freq; // 返回 true 时 l 排在 r 后面}}; };// 用递归生成哈夫曼编码 void generateHuffmanCodes(HuffmanNode* root, const string str, unordered_mapchar, string huffmanCode) {if (root nullptr)return;// 如果是叶子节点保存它的编码if (!root-left !root-right) {huffmanCode[root-ch] str;}// 遍历左子树和右子树generateHuffmanCodes(root-left, str 0, huffmanCode);generateHuffmanCodes(root-right, str 1, huffmanCode); }// 构造哈夫曼树 HuffmanNode* buildHuffmanTree(const unordered_mapchar, int freq) {// 优先队列最小堆用于按频率排序priority_queueHuffmanNode*, vectorHuffmanNode*, HuffmanNode::Compare minHeap;// 创建叶子节点并插入最小堆for (const auto pair : freq) {minHeap.push(new HuffmanNode(pair.first, pair.second));}// 合并节点直到只剩一个节点while (minHeap.size() 1) {// 取出两个最小的节点HuffmanNode* left minHeap.top(); minHeap.pop();HuffmanNode* right minHeap.top(); minHeap.pop();// 创建一个新的内部节点频率为左右节点频率之和HuffmanNode* node new HuffmanNode(\0, left-freq right-freq);node-left left;node-right right;// 将新节点插入最小堆minHeap.push(node);}// 最后堆中剩下的节点就是哈夫曼树的根节点return minHeap.top(); }// 打印哈夫曼编码 void printHuffmanCodes(const unordered_mapchar, string huffmanCode) {for (const auto pair : huffmanCode) {cout pair.first : pair.second endl;} }int main() {// 输入字符串string text this is an example for huffman encoding;// 统计每个字符的频率unordered_mapchar, int freq;for (char c : text) {freq[c];}// 构建哈夫曼树HuffmanNode* root buildHuffmanTree(freq);// 保存每个字符的哈夫曼编码unordered_mapchar, string huffmanCode;// 生成哈夫曼编码generateHuffmanCodes(root, , huffmanCode);// 打印哈夫曼编码printHuffmanCodes(huffmanCode);return 0; }
http://www.tj-hxxt.cn/news/218656.html

相关文章:

  • 创建企业网站经过哪些步骤网站建设属于什么会计科目
  • 珠海找工作哪个网站好wordpress自适应 分页
  • 什么语言开发网站建立网站赚钱 优帮云
  • 怎样在门户网站做 推广门户网站建设管理工作的意见
  • phpcms 中英文网站同城版网站建设
  • 更新网站要怎么做呢广州高端模板网站
  • 免费建站微信wordpress设置了固定连接打不开
  • 住房城乡建设网站wordpress添加面包屑导航
  • 网站开发有哪些服务器个人网站可以做淘宝客
  • 做网站时随便弄上去的文章怎么删掉网页设计与制作轮播图教程
  • 网站地图怎么使用wordpress vs php的区别
  • 家居企业网站建设如何西安手机网站制作
  • 手机网站cms 开源太原关键词排名优化
  • 免费开发网站徐州百姓网发布信息
  • 深网网站安卓优化大师
  • 建设银行校招网站入口网站标题设计
  • 网站建设期末总结wordpress我的世界
  • 山东建设监理协会网站网站怎么做交易平台
  • dw网站建设步骤中山平面设计公司
  • 做ar网站做网站需要做哪些东西
  • 如何用易语言做网站软件工程的发展前景
  • 网络运营与网络营销是什么关系seo网站上线前分析
  • 自己做网站哪种好做自主网站
  • 安康电商网站建设php网站开发心得3500字
  • 基于响应式设计的网站建设无忧网站建设
  • 企业网站内的问答模式怎么做一个网站能多个域名做不同站点
  • 网站建设总体费用项目从立项到施工的程序
  • c++ 网站开发wordpress静态页面
  • 汕头市建设网站百度链接提交
  • 网站黑名单江苏网站建设哪家专业