以前学哈夫曼树的时候困扰我很久
## ①
**答:** 文本只有一种字符如`AAAAAA`时,哈夫曼树退化为单个叶子节点,递归`genCode`会生成空字符串`""`作为该字符的编码。
`path == ""`是根节点特判:根节点初始路径为空,若不加该判断,会把根(同时是叶子)输出空编码。空编码是非法前缀码,解码器无法区分空串和字符,这个特判用来处理只有单个符号的边界情况,避免生成空码。
数据结构用的?
对于很多东西还不知道的我———小萌新,来说,今天的扩展知识真是让人头晕脑胀啊。。。
但是,今天的哈夫曼编码让我有了一个大概的了解。不过最感慨的还是,原来树状分析图能这么有用处。
看一看有没有新想法
YY芋圆 发表于 2026-10-5 09:40
对于很多东西还不知道的我———小萌新,来说,今天的扩展知识真是让人头晕脑胀啊。。。
但是,今天的哈夫 ...
嗯嗯,二叉树也是数据结构的一个很大的要点哦
本帖最后由 捭阖jacky 于 2026-10-5 11:05 编辑
学习了。还是新手,正在努力提升中。
着实让我看不明白了
精华贴,谢谢分享
茅塞顿开!先思考了第二个问题:哈夫曼的重点在加权。另,通过帖中“哈夫曼编码短板”部分,“每个符号至少要 1 个比特。如果某个符号的概率高达 0.9,熵算下来只需要 0.15 bit,可哈夫曼最少也得给 1 bit”,所以我想:当一串长字符,且概率高度倾斜时,哈夫曼码长会长于定长编码的
Sora-空 发表于 2026-10-5 14:04
茅塞顿开!先思考了第二个问题:哈夫曼的重点在加权。另,通过帖中“哈夫曼编码短板”部分,“每个符号至少 ...
≡ω≡萌新在读代码时发出SOS的叫声。
Sora-空 发表于 2026-10-5 14:04
茅塞顿开!先思考了第二个问题:哈夫曼的重点在加权。另,通过帖中“哈夫曼编码短板”部分,“每个符号至少 ...
是的,但对于重复率高的编码哈夫曼就有优势啦~
数据结构的回旋镖{:5_107:}
怎么是这个打卡,是不是发错了
看不懂
按出现频率/价值分配资源,自底向上合并最小项,才能以最小代价逼近最优极限。
学到了!哈夫曼精髓就是自底向上,每次取最小两个合并,叶子路径即前缀码。ABRACADABRA 压到 23 bit,离熵 22.44 只差一点。编码方案不唯一,左右分支和同权值顺序可换,码长/总长不变。
打卡
只看懂了通信原理里面学的熵,好难啊
有点懵懵的