哈夫曼树

哈夫曼树的构建步骤(合并最小权值
1、初始叶子:G (3), A (5), C (7), D (8), H (11), E (14), F (23), B (29)
2、合并G (3)+A (5) → 节点 9 (8)
3、合并 C (7)+D (8) → 节点 10 (15) //优先用叶子的8
4、并 节点 9 (8)+H (11) → 节点 11 (19)
5、合并 E (14)+ 节点 10 (15) → 节点 12 (29)
6、合并 节点 11 (19)+F (23) → 节点 13 (42)
7、合并 B (29)+ 节点 12 (29) → 节点 14 (58)
8、合并 节点 13 (42)+ 节点 14 (58) → 节点 15 (100)

哈夫曼编码()左0右1

字符 权值 哈夫曼编码
B 29 00
F 23 01
E 14 100
H 11 1011
D 8 10101
C 7 10100
A 5 1101
G 3 1100

HT 数组初态与终态(下标 1~15)
初态(仅叶子节点有 data 和 weight,parent/child 均为 0)

No data weig pare lchi rchi
1 A 5 0 0 0
2 B 29 0 0 0
3 C 7 0 0 0
4 D 8 0 0 0
5 E 14 0 0 0
6 F 23 0 0 0
7 G 3 0 0 0
8 H 11 0 0 0
9 - 0 0 0 0
10 - 0 0 0 0
11 - 0 0 0 0
12 - 0 0 0 0
13 - 0 0 0 0
14 - 0 0 0 0
15 - 0 0 0 0

终态(构建完成后)

No data weig pare lchi rchi
1 A 5 11 0 0
2 B 29 14 0 0
3 C 7 10 0 0
4 D 8 10 0 0
5 E 14 12 0 0
6 F 23 13 0 0
7 G 3 9 0 0
8 H 11 11 0 0
9 - 8 11 7 1
10 - 15 12 3 4
11 - 19 13 9 8
12 - 29 14 5 10
13 - 42 15 11 6
14 - 58 15 2 12
15 - 100 0 13 14

时间复杂度
哈夫曼树构建的时间复杂度为 O(n2)(每次选最小权值节点需遍历 O(n),共 n−1 次合并)。

posted @ 2026-03-18 14:40  ZealousMclaren  阅读(20)  评论(0)    收藏  举报