(8)--第4章 树和二叉树-哈夫曼树.ppt
《(8)--第4章 树和二叉树-哈夫曼树.ppt》由会员分享,可在线阅读,更多相关《(8)--第4章 树和二叉树-哈夫曼树.ppt(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第5章 树和二叉树哈夫曼树哈夫曼树游游戏戏中中主主角角的的生生命命值值d d,有有这这样样的的条条件件判判定定:当当怪怪物物碰碰到到主主角角后后,怪怪物物的的反反应应遵遵从从下下规则规则:5.6 5.6 哈夫曼树及其应用哈夫曼树及其应用if(d100)state=嘲笑,单挑嘲笑,单挑;else if(d200)state=单挑单挑;else if(d300)state=嗜血魔法嗜血魔法;else if(d=200)&(d=300)&(d=100)&(d200)state=单挑单挑;else if(d100)state=嘲笑,单挑嘲笑,单挑;else state=逃跑逃跑;if(d100)sta
2、te=嘲笑,单挑嘲笑,单挑;else if(d200)state=单挑单挑;else if(d300)state=嗜血魔法嗜血魔法;else if(d500)state=呼唤同伴呼唤同伴;else state=逃跑逃跑;在在远程通程通讯中,要将待中,要将待传字符字符转换成二成二进制的字符串,制的字符串,怎怎样编码才能使它才能使它们组成的成的报文在网文在网络中中传得最快?得最快?ABACCDA000110010101100000011010哈夫曼哈夫曼树应用用实例哈夫曼例哈夫曼编码出现次数较多的字符采用尽可能短的编码哈夫曼哈夫曼树应用用实例哈夫曼例哈夫曼编码关关键:要要设计长度不等的度不等的编码
3、,则必必须使任一字符使任一字符的的编码都不是另一个字符的都不是另一个字符的编码的的前前缀前前缀编码0000AAAA ABA BB重码ABACCDA000011010ACBD000111采用二叉树设计前缀编码左分支用“0”右分支用“1”A0B110C10D111 0110010101110 ABACCDA分解接收字符串:遇分解接收字符串:遇“0”向左,遇向左,遇“1”向右;向右;一旦到达叶子一旦到达叶子结点,点,则译出一个字符,反复由根出一个字符,反复由根出出发,直到,直到译码完成。完成。0110010101110ACBD000111ABACCDA特点:每一码都不是另一码的前缀,绝不会错译!称为
4、前缀码哈夫曼哈夫曼编码的的译码过程程路路径径:路径路径长度度:带权路径路径长度度:树的的带权路径路径长度度:哈哈 夫夫 曼曼 树:由一由一结点到另一点到另一结点点间的分支所构成的分支所构成路径上的分支数目路径上的分支数目结点到根的路径点到根的路径长度与度与结点上点上权的乘的乘积debacf g树中所有叶子中所有叶子结点的点的带权路径路径长度之和度之和带权路径路径长度最小的度最小的树ae的路径长度2WPL=wklk k=1n哈夫曼哈夫曼树的构造的构造dcab2475WPL=7*3+5*3+2*1+4*2=46abcd7524WPL=7*1+5*2+2*3+4*3=35abcd7524WPL=7*
5、2+5*2+2*2+4*2=36权值分分别为7,5,2,4,构造有,构造有4个叶子个叶子结点的二叉点的二叉树a7b5c2d4a7b5c2d46a7b5c2d411a7b5c2d418a7b5c2d4哈夫曼哈夫曼树的构造的构造过程程操作要点:操作要点:对权值的的合并、合并、删除与替除与替换,总是合并当前是合并当前值最小的两个最小的两个基本思想:基本思想:使使权大的大的结点靠近根点靠近根基本思想:概率大的字符用短基本思想:概率大的字符用短码,小的用,小的用长码,构造哈夫,构造哈夫曼曼树哈夫曼哈夫曼编码的构造的构造例:某系例:某系统在通在通讯时,只出,只出现C,A,S,T,B五种字符,五种字符,其出
6、其出现频率依次率依次为2,4,2,3,3,试设计Huffman编码。148464220001113301 T B A C ST 00B 01A 10 C 110 S 111例例5.2根据根据给定的定的n个个权值 w1,w2,wn,构造构造n棵只有根棵只有根结点的二叉点的二叉树。在森林中在森林中选取两棵根取两棵根结点点权值最小的最小的树作左右子作左右子树,构,构造一棵新的二叉造一棵新的二叉树,置新二叉,置新二叉树根根结点点权值为其左右子其左右子树根根结点点权值之和。之和。在森林中在森林中删除除这两棵两棵树,同,同时将新得到的二叉将新得到的二叉树加入森加入森林中。林中。重复上述两步,重复上述两步,
7、直到只含一棵直到只含一棵树为止止,这棵棵树即即哈夫哈夫曼曼树。哈夫曼哈夫曼树的构造的构造过程程对n(n大于等于大于等于2)个个权值均不相同的字符构成哈夫均不相同的字符构成哈夫曼曼树,关于,关于该树的叙述中,的叙述中,错误的是(的是()该树一定是一棵完全二叉一定是一棵完全二叉树树中一定没有度中一定没有度为1的的结点点树中两个中两个权值最小的最小的结点一定是兄弟点一定是兄弟结点点树中任一非叶中任一非叶结点的点的权值一定不小于下一一定不小于下一任一任一结点的点的权值ABCD提交提交单选题2分2024/2/8下面下面给出的从根分出的从根分别到达两个叶子到达两个叶子结点路径上的点路径上的权值序列,能属于
8、同一序列,能属于同一颗哈夫曼哈夫曼树的是()。的是()。24,10,5和和24,10,724,10,5和和24,12,724,10,10和和24,14,1124,10,5和和24,14,6ABCD提交提交单选题2分typedef struct int weght;int parent,lch,rch;*HuffmanTree;哈夫曼哈夫曼树构造算法的构造算法的实现(算法(算法5.10)采用采用顺序存序存储结构构一一维结构数构数组结点点类型定型定义一棵有一棵有n个叶子个叶子结点的点的Huffman树有有个个结点点2n-11)初始化初始化HT1.2n-1:lch=rch=parent=02)输入初
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8-第4章 树和二叉树-哈夫曼树 二叉 哈夫曼树
限制150内