(精)树和二叉树 数据结构.ppt

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一棵度为2的树与一棵二叉树有何区别? 解:二叉树是颗有序树,但度为2的树则未必有序。 平衡树—— 排序树—— 判定树—— 带权树—— 最优树—— 特点:左右子树深度差 ≤1 特点:“左小右大” 例如,12个球只称3次分出轻重 特点:路径长度带权值 带权路径长度最短的树,又称 Huffman树,用途之一是通信中的压缩编码。 二叉树的应用 6.5 霍夫曼树 6.4 树和森林 树的存储结构--二叉链表表示法 typedef struct CSNode{ ElemType data; struct CSNode *firstchild,*nextsibling; }CSNode,*CSTree; 树的存储结构--二叉链表表示法 树 二叉树 对应 存储 存储 解释 解释 6.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 例6.2 根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树。 在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和。 在森林中删除这两棵树,同时将新得到的二叉树加入森林中。 重复上述两步,直到只含一棵树为止,这棵树即霍夫曼树。 霍夫曼树的构造过程 Ch5_8.c typedef struct { int weght; int parent,lch,rch; }*HuffmanTree; 霍夫曼树构造算法的实现(算法6.10) 采用顺序存储结构——一维结构数组 结点类型定义 一棵有n个叶子结点的Huffman树有 个结点 2n-1 1)初始化HT[1..2n-1]:lch=rch=parent=0 2)输入初始n个叶子结点:置HT[1..n]的weight值 3)进行以下n-1次合并,依次产生HT[i],i=n+1..2n-1: 3.1)在HT[1..

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档