数据结构与培训ch06_tree .ppt
文本预览下载声明
不等长编码方案 例如:要传送的信息原文为“ABACCDA” 不等长编码方案 A:0 B:110 C:10 D:111 发送方: 接收方: 0110010101110 ABACCDA 0110010101110 ABACCDA 编码 译码 7 5 d a c b 2 4 不等长编码方案 不等长编码方案 A:0 B:00 C:1 D:11 不等长编码方案 A:0 B:110 C:10 D:111 发送方: 接收方: 000011110 ABACCDA 000011110 ? 编码 译码 前缀编码 为一个字符集合中的字符进行编码时,若每个字符的编码不是其他字符编码的前缀,则称这种编码为前缀编码。 不等长编码方案 A:0 B:110 C:10 D:111 7 5 d a c b 2 4 最优二叉树 a b c d 7 5 2 4 7 5 d c a b 4 2 7 5 d a b c 2 4 WPL=36 WPL=46 WPL=35 6.6.2 赫夫曼编码 已知某系统在通信联络中只可能出现8种字符,其概率如下表所示: a b c d e f g h 0.05 0.29 0.07 0.08 0.14 0.23 0.03 0.11 为字符建立赫夫曼编码 赫夫曼编码举例 typedef struct { char ch; unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,*Huffmantree; Huffmantree HT; HT = new HTNode[2*n]; //赫夫曼树的存储结构 ch weight parent lchild rchild 赫夫曼编码举例 ch weight parent lchild rchild a 0.05 0 0 0 b 0.29 0 0 0 c 0.07 0 0 0 d 0.08 0 0 0 e 0.14 0 0 0 f 0.23 0 0 0 g 0.03 0 0 0 h 0.11 0 0 0 1 2 3 4 5 6 7 8 ch weight parent lchild rchild a 0.05 0 0 0 b 0.29 0 0 0 c 0.07 0 0 0 d 0.08 0 0 0 e 0.14 0 0 0 f 0.23 0 0 0 g 0.03 0 0 0 h 0.11 0 0 0 1 2 3 4 5 6 7 8 a 0.05 g 0.03 9 9 7 1 9 0.08 0 7 1 9 a 0.05 9 g 0.03 9 0 c 0.07 c 0.07 0 10 c 0.07 10 d 0.08 ch weight parent lchild rchild a 0.05 9 0 0 b 0.29 0 0 0 0 0 d 0.08 0 0 e 0.14 0 0 0 f 0.23 0 0 0 g 0.03 9 0 0 h 0.11 0 0 0 1 2 3 4 5 6 7 8 0.08 0 7 1 9 7 1 9 3 4 10 0.15 0 3 4 10 h 0.11 0.08 0.19 0 9 8 11 8 11 11 11 10 d 0.08 10 h 0.11 11 0.08 11 0.15 e 0.14 ch weight parent lchild rchild a 0.05 9 0 0 b 0.29 0 0 0 c 0.07 10 0 0 d 0.08 10 0 0 e 0.14 0 0 0 f 0.23 0 0 0 g 0.03 9 0 0 h 0.11 11 0 0 1 2 3 4 5 6 7 8 0.08 11 7 1 9 3 4 10 0.15 0 3 4 10 0.19 0 9 8 11 0.29 0 5 10 12 5 12 12 12 8 11 7 1 9 e 0.14 12 0.15 12 ch weight parent lchild rchild a 0.05 9 0 0 b 0.29 0 0 0 c 0.07 10 0 0 d 0.08 10 0 0 e 0.14 12 0 0 f 0.23 0 0 0 g 0.03 9 0 0 h 0.11 11 0 0 1 2 3 4 5 6 7 8 0.08 11 7 1 9 3 4 10 0.15 12 3 4 10 0.19 0 9 8 11 0.29 0 5 10 12
显示全部