数据结构 C语言版 严蔚敏 李冬梅 吴伟民 第5章 树和二叉树新.pptVIP

  • 16
  • 0
  • 约1.59万字
  • 约 82页
  • 2015-12-24 发布于广东
  • 举报

数据结构 C语言版 严蔚敏 李冬梅 吴伟民 第5章 树和二叉树新.ppt

* 北京林业大学信息学院 5.5 霍夫曼树及其应用 路 径: 路径长度: 带权路径长度: 树的带权路径长度: 霍 夫 曼 树: 由一结点到另一结点间的分支所构成 路径上的分支数目 结点到根的路径长度与结点上权的乘积 d e b a c f g 树中所有叶子结点的带权路径长度之和 带权路径长度最小的树 a→e的路径长度= 2 WPL = ?wklk k=1 n * 北京林业大学信息学院 d c a b 2 4 7 5 WPL=7*3+5*3+2*1+4*2=46 a b c d 7 5 2 4 WPL=7*1+5*2+2*3+4*3=35 a b c d 7 5 2 4 WPL=7*2+5*2+2*2+4*2=36 权值分别为7,5,2,4,构造有4个叶子结点的二叉树 * 北京林业大学信息学院 a 7 b 5 c 2 d 4 a 7 b 5 c 2 d 4 6 a 7 b 5 c 2 d 4 11 a 7 b 5 c 2 d 4 18 a 7 b 5 c 2 d 4 霍夫曼树的构造过程 操作要点:对权值的合并、删除与替换,总是合并当前值最小的两个 基本思想:使权大的结点靠近根 * 北京林业大学信息学院 在远程通讯中,要将待传字符转换成二进制的字符串,怎样编码才能使它们组成的报文在网络中传得最快? ABACCDA 000110010101100 000011010 霍夫曼树应用实例--霍夫曼编码 出现次数较多的字符采用尽可能短的编码 * 北京林业大学信息学院 关键:要设计长度不等的编码,则必须使任一字符的编码都不是另一个字符的编码的前缀-前缀编码    0000 AAAA ABA BB 重码 ABACCDA 000011010 霍夫曼树应用实例--霍夫曼编码 * 北京林业大学信息学院 A C B D 0 0 0 1 1 1 采用二叉树设计前缀编码 左分支用“0” 右分支用“1” A—0 B—110 C—10 D—111 0110010101110 ABACCDA * 北京林业大学信息学院 分解接收字符串:遇“0”向左,遇“1”向右;一旦到达叶子结点,则译出一个字符,反复由根出发,直到译码完成。 0110010101110 A C B D 0 0 0 1 1 1 ABACCDA 特点:每一码都不是另一码的前缀,绝不会错译! 称为前缀码 霍夫曼编码的译码过程 * 北京林业大学信息学院 基本思想:概率大的字符用短码,小的用长码,构造霍夫曼树 霍夫曼编码的构造 例:某系统在通讯时,只出现C,A,S,T,B五种字符,其出现频率依次为2,4,2,3,3,试设计Huffman编码。 14 8 4 6 4 2 2 0 0 0 1 1 1 3 3 0 1 T B A C S T  00 B  01 A  10 C  110 S  111 例5.2 * 北京林业大学信息学院 根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树。 在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和。 在森林中删除这两棵树,同时将新得到的二叉树加入森林中。 重复上述两步,直到只含一棵树为止,这棵树即霍夫曼树。 霍夫曼树的构造过程 * 北京林业大学信息学院 Ch5_8.c typedef struct { int weght; int parent,lch,rch; }*HuffmanTree; 霍夫曼树构造算法的实现(算法5.10) 采用顺序存储结构——一维结构数组 结点类型定义 一棵有n个叶子结点的Huffman树有 个结点 2n-1 * 北京林业大学信息学院 1)初始化HT[1..2n-1]:lch=rch=parent=0 2)输

文档评论(0)

1亿VIP精品文档

相关文档