第六章树状结构简析.ppt

* 前缀编码:任何一个字符的编码都不是同一字符集中另一个字符的编码的前缀。 如:A B C D 四个字符的使用率由高到低,编码为 A --- 0 B --- 10 C --- 110 D --- 111 做法:以字符概率作为叶子结点,构造二叉树,左分支标0;右分支标1;构成编码一定是前缀编码。 利用哈夫曼树可以构造一种不等长的二进制编码,并且构造所得的哈夫曼编码是一种最优前缀编码,即使所传电文的总长度最短。 * 例. 假设字符A,B,C,D,E的出现次数为42,28,37,10,64 求使所传电文的总长度最短的一种编码? 首先构建哈夫曼树(根据概率) 10 28 38 37 75 42 64 106 181 1 1 1 1 0 0 0 0 A --- 10 B --- 011 C --- 00 D --- 010 E --- 11 哈夫曼树及编码实现 typedef struct { unsigned int weight; unsigned int parent,lchild,rchild; }HTNode,*HuffmanTree; typedef char **HuffmanCode; // 动态分配数组存储赫夫曼编码表 * void HuffmanCoding(HuffmanTree HT,Hu

文档评论(0)

1亿VIP精品文档

相关文档