algorithm B manipulations 1/99

news/2025/10/4 14:50:50/文章来源:https://www.cnblogs.com/somebody27/p/19125593

step by step for the Huffman algorithm in C++, writing down every action on each data structure and labeling it as Insert / Update / Remove / Combine / Traverse. This will show exactly how manipulations map to steps in the algorithm.


Huffman Algorithm: Step-by-Step Data Actions

Step Data Structure Action Manipulation Type Purpose
Count character frequencies unordered_map<char,int> freqMap[c]++ Insert / Update Add new character or increment frequency
Create leaf nodes priority_queue<HuffmanNode*> pq.push(new HuffmanNode(c,freq)) Insert Add leaf nodes for all characters
Build Huffman tree priority_queue<HuffmanNode*> left = pq.top(); pq.pop() Remove / Read Retrieve smallest frequency node
Build Huffman tree priority_queue<HuffmanNode*> right = pq.top(); pq.pop() Remove / Read Retrieve second smallest node
Build Huffman tree HuffmanNode* merged = new HuffmanNode('\0', left->freq + right->freq) Combine / Insert Create new parent node combining left & right
Build Huffman tree merged->left = left; merged->right = right Update / Combine Connect children to new node
Build Huffman tree pq.push(merged) Insert Add merged node back to priority queue
Generate Huffman codes HuffmanNode* Recursive call generateCodes(root->left, code + "0", huffmanCode) Traverse / Read Go down left subtree
Generate Huffman codes HuffmanNode* Recursive call generateCodes(root->right, code + "1", huffmanCode) Traverse / Read Go down right subtree
Generate Huffman codes unordered_map<char,string> huffmanCode[root->ch] = code Insert / Update Assign Huffman code to leaf node
Encode string unordered_map<char,string> encoded += huffmanCode[c] Read Convert input character to Huffman code

Observations

  1. Insert occurs when creating new entries (map, queue, tree leaf, or code map).
  2. Update occurs when modifying existing data (frequency increment, updating tree pointers, updating code map).
  3. Remove occurs when popping nodes from the priority queue.
  4. Combine occurs when merging two nodes into one parent.
  5. Traverse occurs during recursion in code generation.

By explicitly labeling every action, you can see why each manipulation is needed, not just what data structure to use.


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927242.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解析:Java JVM --- JVM内存区域划分,类加载,GC垃圾回收

深入解析:Java JVM --- JVM内存区域划分,类加载,GC垃圾回收pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

天津宇昊建设集团有限公司网站济南专业网站建设咨询

二叉搜索树中第K小的元素 二叉搜索树具有如下性质&#xff1a; 结点的左子树只包含小于当前结点的数。 结点的右子树只包含大于当前结点的数。 所有左子树和右子树自身必须也是二叉搜索树。 二叉树的中序遍历即按照访问左子树——根结点——右子树的方式遍历二叉树&#x…

比赛题2

DMY DAY5 T1 糖丸了,建个分层图第二层连边权为 \(0\) 的边,跑 01bfs 即可,时间复杂度 \(\mathcal{O}(n + m + V \log V)\)。点击查看代码 #include <bits/stdc++.h> using namespace std; const int N = 2e5 …

【微科普】蒙特卡洛(全网最好懂,附MATLAB算法):用 “撒芝麻” 的智慧破解复杂挑战 —— 从披萨面积到金融风险的诗意算法

【微科普】蒙特卡洛(全网最好懂,附MATLAB算法):用 “撒芝麻” 的智慧破解复杂挑战 —— 从披萨面积到金融风险的诗意算法2025-10-04 14:42 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !import…

ZR 2025 十一集训 Day 4

dp、贪心杂题。CF1606E 思维难度:\(\color{#52C41A} 绿\) *1700 如何设计状态? 首先第一维一定是剩余 \(i\) 个人,这个是毫无疑问的。 然后看我们实际上关心的是什么。因为要算没有人胜利的方案数,而如果有人胜利,…

价值处理单元(VPU)专题研究:从价值危机到透明决策的计算革命——声明Ai研究

价值处理单元(VPU)专题研究:从价值危机到透明决策的计算革命 一、研究背景与意义 1.1 从算力危机到价值危机的范式转变 在人工智能发展的当前阶段,我们正面临着一个根本性的悖论:模型的预测精度与人类信任度呈现出…

13-Neo4j Desktop

Neo4j Desktop 概述 Neo4j Desktop是Neo4j官方提供的图形化桌面应用程序,专门为开发者和数据科学家设计,用于简化图数据库的开发、管理和可视化工作流程。4 是什么 Neo4j Desktop是一个集成的开发环境,提供了以下核…

深圳哪个做网站好优化网站维护一般需要多久时间

08-09上海大学计算机考研试卷第 页 共 页 第 页 共 页第 页 共 页 第 页 共 页上海大学2008&#xff5e;2009学年 秋季学期研究生答题卷课程名称&#xff1a;计算机视觉基础 课程编号&#xff1a; 0座机电话号码 学 分&#xff1a; 4 考试日期&#xff1a; 2008年11月23日应试人…

中兴ZXHN F450光猫关闭TR069实录

前情提要 上了高中后家里搬家,打电话叫电信迁移宽带,结果迁移完发现师傅把原本的华为光猫换成了中兴的。问了一下师傅光猫后台密码,没想到师傅直接给了超级密码(( 由于电信的光猫可能会被远程重置超密,为了保住超…

赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解

赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &quo…

4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”

完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Con…

随机化学习笔记

以后不会正解就用这东西。 随机函数 说一个单独的数是「随机数」是无意义的,所以以下我们都默认讨论「随机数列」,即使提到「随机数」,指的也是「随机数列中的一个元素」。 现有的计算机的运算过程都是确定性的,因…

在国税网站更换购票员怎么做四川新正路桥建设工程有限公司网站

文章目录 基本思想递归版本思路代码实现 非递归版思路代码实现 特性结果演示 基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子…

PWN手的从成长之路-08-not_the_same_3dsctf_2016-溢出+函数调用劫持

远程连接,没有什么可用信息。file 查看文件。32 位 ELF 可执行文件。checksec 查看文件安全属性。开启了 NX 保护,栈上无法执行。IDA 打开文件。查看 main 函数,发现了 gets() 高危函数。并且在 get_secret 函数中找…

强化学习系统性学习笔记(一):从理论基础到策略优化

强化学习系统性学习笔记(一):从理论基础到策略优化强化学习系统性学习笔记(一):从理论基础到策略优化 一、强化学习的起源与核心问题 1.1 理论溯源:从生物学习到数学框架 强化学习的思想源头可以追溯到生物行为…

12-windows11的WSL详解

Windows 11 WSL详解:在Windows中运行Linux的完整指南 总述 Windows Subsystem for Linux(WSL)是微软在Windows 11中引入的一项革命性技术,它允许用户在Windows操作系统内直接运行Linux环境,无需虚拟机或双系统启动…

深入解析:音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

完整教程:如何将文件从电脑传输到安卓设备

完整教程:如何将文件从电脑传输到安卓设备pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

[vmware+openeuler22.03]创建软RAID

1.添加虚拟硬盘 如下图所示添加4块成员硬盘(RAID6的最小成员硬盘数量为4)2.安装mdadm sudo yum install mdadm3.创建RAID 查看mdadm的使用方法 Joe@openeuler ~]$ sudo mdadm --create --help Usage: mdadm --creat…