文章目录
1. Huffman编码
1.1 赫夫曼(Huffman)树
1.1.1 定义
- 又叫最优二叉树:是一种带权路径最小的树。
- 路径长度:例如:根节点到左孩子就是一个路径长度。
- 树的路径长度:从树根到每一个节点的路径长度之和。
- 树的带权路径长度:树中所有叶子节点的带权路径之和,记作WPL。
- WPL最小:当WPL最小时的二叉树,称为最优二叉树或赫夫曼树。
1.1.2 什么是WPL

1.2 前缀编码
- 若要设计长短不等的编码,则必须是任意一个字符的编码都不是另一个字符的编码的前缀,这种编码称为前缀编码。
- 图例:

1.3 赫夫曼编码
1.3.1 定义
- 由赫夫曼树,得到的前缀编码,就是赫夫曼编码。
- 赫夫曼树没有度为1的节点。
- n个叶子节点,一定有2*n-1个节点。
- 赫夫曼编码:从叶子节点出发,走一条从叶子到根的路径。
- 解码(译码):从根出发,走一条从根到叶子的路径。
- 设计时应该用,三叉链表。
1.3.2 Huffman 算法
给定 w1, w2, … , wi
(1)作 t 片树叶,分别以 w1, w2, … , wi 作为权。
(2)在所有入度为0的顶点(不一点是树叶)中选取两个权最小的顶点,添加一个新分支,它以这2个顶点为儿子,其权等于这两个儿子的权之和。
(3)重复(2),直到只有1个入度为0的顶点为止。
WPL等于所有分支点的权之和。
2. C语言文件读写
-
打开方式:{r , w, a}, {t , b},{+}
-
r : 只读,文件必须存在
-
w:只写,清空源文件,不存在就新创
-
a: 追加,在源文件后面追加,不存在就新创
-
t: 文本文件
-
b:二进制文件
-
+: w+r 允许读和写
462

被折叠的 条评论
为什么被折叠?



