软件工程chapter课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈夫曼树的概念 哈夫曼编码 计算机软件基础 将森林转换为二叉树 ? 转换步骤: 与树转换成二叉树的过程类似。 注意: (1)森林中各棵树的根结点互为兄弟。 (2)旋转时以第一棵树的根结点为轴心。 ? ? ? ? 计算机软件基础 G H B C D F A E I J L K G H B C D F A E I J L K 连线 B C A G H I J L K D F E 旋转 G H B C D F A E I J L K 抹线 例:将下面的森林转换成对应的二叉树。 ? ? ? ? 计算机软件基础 七. 树的应用 ( 一)二叉排序树 1. 二叉排序树的定义 二叉排序树或是一棵空树,或是满足以下条件的二叉树: ① 若其左子树非空,则其左子树中所有结点的关键字值均小于根结点的关键字值; ② 若其右子树非空,则其右子树中所有结点的关键字值均大于或等于根结点的关键字值; ③ 其左、右子树本身均为二叉排序树。 ? ? ? ? 计算机软件基础 12 88 30 82 49 18 62 45 44 25 二叉排序树示例 二叉排序树的重要特点: 对其进行中序遍历可得到一个按关键字值升序排列的结点序列。 ? ? ? ? 计算机软件基础 2. 二叉排序树的生成 插入一个结点的操作过程: ① 若原二叉排序树为空,则将待插结点作为此树的根结点。 ② 若原二叉排序树不空,则比较待插结点和根结点的关键字值。若待插元素的关键字值小于根结点的关键字值,则将其插入到左子树中;否则,将其插入到右子树中。 ③ 在二叉排序树的左、右子树中的插入过程同上。 主要思想:二叉排序树的生成就是从一棵空的二叉排序树开始,按关键字值逐个将一组结点依次插入到树中的恰当位置上。 ? ? ? ? 计算机软件基础 例:对于一组关键字{51,34,79,18,45,86},生成对应的二叉排序树。 51 51 34 51 34 79 51 34 79 18 45 51 34 79 18 86 51 34 79 18 45 ? ? ? ? 计算机软件基础 算法: void insert(bstree *p,bstree *s) /*插入一个新结点的算法*/ { if(s-datap-data) { if (p-lchild==NULL) p-lchild=s; else insert(p-lchild,s);} else { if (p-rchild==NULL) p-rchild=s; else insert(p-rchild,s); } } 二叉排序树根结点的指针 新结点的指针 ? ? ? ? 计算机软件基础 bstree* bstreecreate() /*二叉排序树的生成算法*/ { int x; bstree *s,*t; t=NULL; printf(input the elements of bstree,end flag is -1\n); scanf(%d,x); while(x!=-1) { s=(bstree*)malloc(sizeof(bstree)); s-data=x; s-lchild=s-rchild=NULL; if (t==NULL) t=s; else insert(t,s); scanf(%d,x); } return (t); } ? ? ? ? a?80 a?90 不及格 良好 中等 及格 优秀 a?60 a?70 分数 0-59 60-69 70-79 80-89 90-100 比例数 0.05 0.15 0.40 0.30 0.10 0.05 0.10 假定分数分布规律为: 若有10000个输入数据,按图(a)需31500次比较,而按图(b)仅需22000次比较。对于同一个问题,不同的判定树,其效率大不一样。什么情况下效率最高?这就是哈夫曼树要解决的问题。 图(a) ≥ ≥ 不及格 及格 中 良 优 60? 70? 80? 90? 0.15 0.40 0.30 ≥ ≥ 图(b) 1.问题引入 编制一个将百分制转换成五分制的程序。最直观的方法是利用if语句来实现。可用二叉树描述判定过程。 (二)哈夫曼树 2. 哈夫曼树的基本概念及其构造方法

文档评论(0)

phljianjian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档