树、森林——树与二叉树的应用(哈夫曼树的构造)

构造口诀

每次选两个权最小结点,合并出新父结点,重复直到只剩一个

详细步骤

把所有带权叶子结点看成一棵只有根的二叉树,构成森林

从森林中选出两个权值最小的树

新建一个父结点,权值 = 两结点权值之和

两棵小树分别作为新父结点左、右孩子

把新树放回森林

重复 2~5,直到森林只剩一棵树

这棵树就是哈夫曼树

关键规则

左右孩子没有严格顺序,所以哈夫曼树不唯一

合并出新结点一定是分支结点,不带原始权

哈夫曼树绝对没有度为 1 的结点

n 个叶子结点 → 总结点数 = 2n - 1

举例(权:1,2,3,4)

选 1、2 → 合并 3

森林:3、3、4

选 3、3 → 合并 6

森林:4、6

合并 4、6 → 10

最终哈夫曼树完成

考点

n 个叶子,分支结点 = n-1 个

总结点 = 2n-1

不存在度为 1 结点

WPL 唯一最小,树形不唯一

相关推荐
benchmark_cc8 分钟前
批量获取股票数据后,如何统一转换成 DataFrame?从数据结构到量化研究的完整实践
数据结构·python·数据分析·量化交易·股票数据·quantdash
啵啵啵鱼18 分钟前
第三章 栈、队列和数组相关结构
java·数据结构·栈·队列
xys_67840 分钟前
深挖数据结构:线性表(1)
数据结构
mmmmath_311 小时前
LeetCode.104.二叉树的最大深度
数据结构·leetcode
信奥卷王17 小时前
[GESP202509 六级] 划分字符串(含视频)
数据结构·算法
m0_7520356317 小时前
Redis 数据结构总结
数据结构·数据库·redis
tachibana218 小时前
Go 语言的 Map 是否是并发安全的?
开发语言·数据结构·后端·golang·go·语言
Logic10118 小时前
C语言/数据结构字符串题解:统计“chhc“子串权值总和——一次遍历模式匹配
c语言·数据结构·算法·字符串·时间复杂度·空间复杂度·ascii
我命由我1234519 小时前
LRU 缓存淘汰策略
数据结构·redis·学习·mysql·算法·缓存·学习方法
垆边人似月.19 小时前
华为题:合并区间
数据结构·c++·算法