网站大量收购独家精品文档,联系QQ:2885784924

5数据结构_树与二叉树.ppt

  1. 1、本文档共158页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
5数据结构_树与二叉树.ppt

5.5 二叉树的存储结构及实现 5.5.2 二叉链表 ①随机建完全二叉树改进算法的N-S图: 创建指针数组(0-n) 从第一个数到最后一个数(i:1--n) 创建结点,赋随机数 左、右孩子置空 从最后一个结点到第二个i:n—2) 计算父结点位置 存储到父结点的孩子指针域(左?右?) 返回根结点地址 5.5 二叉树的存储结构及实现 5.5.2 二叉链表 ①随机建完全二叉树的改进算法: BiTree* createFull(int n) { } BiNode *p[n+1]; for(i=1;i=n;i++) { p[i]=new BiNode();p[i]-data=rand() % 99; p[i]-lchild= p[i]-rchild=NULL; } for(i=n;i1;i--) if (i%2==0) p[i/2]-lchild=p[i]; else p[i/2]-rchild=p[i]; return p[1]; 5.5 二叉树的存储结构及实现 5.5.3 三叉链表与线索二叉树 rchild parent data lchild 5.6 树的应用举例 1.引例 假设有某种成绩N个,编程统计其优,良,中,及格,差的人数各多少。 A:[90-100] B:[80-90) C[70-80) D[60-70) E[0-60) 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 该算法的核心是对每一个成绩进行分类汇总,具体地讲,就是通过判断分数的类型,进行累计求和,其判断的N-S图可能为: 分数60? E++ 分数70? D++ 分数80? C++ 分数90? B++ A++ 5.6 树的应用举例 1.引例 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 几种判断树示例: 分数70 分数60 分数80 分数90 E++ C++ D++ A++ B++ 分数=80 分数=90 分数=80 分数=60 A++ C++ B++ E++ D++ 分数60 B++ C++ A++ E++ D++ 60≤分数70 70≤分数80 80≤分数90 哪一种判断 效率更高? 判断树与什么有关? 5.6 树的应用举例 2. 哈夫曼树 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 1)哈夫曼树的概念 叶结点的权值(weigtht)--与叶结点有关的一个数量值。 叶结点的路径长度(path length)--二叉树的根结点到达叶结点的路径中边的数量。 树的带权路径长度(weigthted path length)--带权的二叉树中,所有叶结点权值与其路径长度积的总和,记为: WPL= 带权二叉树--叶结点有权值的二叉树。 5.6 树的应用举例 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 哈夫曼树(Hhffman tree)--带权路径长度最小的二叉树,也称为最优二叉树。 例如,给定权值{2,3,4,5}的四个结点,可构造出多种二叉树,它们的带权路径长度不尽相同。 2 3 4 5 5 4 2 3 WPL=35 WPL=37 WPL=28 2 3 4 5 3 4 5.6 树的应用举例 2) 哈夫曼树的构建 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 哈夫曼算法(构建哈夫曼树)的N-S图: 各个结点独立成树(构成森林) 当森林中树的棵数大于1 选择两棵权和最小的树 合并这两棵权小的树 哈夫曼算法操作示意 W={1,1,4,7} 哈夫曼树的构造过程: 5.6 树的应用举例 2) 哈夫曼树的构建 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 1 1 4 7 2 6 13 5.6 树的应用举例 3. 哈夫曼编码 5.6.1 二叉树应用举例—哈夫曼树及哈夫曼编码 编码--给每一个对象标记一个二进制位串。 例如:ASCII编码-用7位二进制位来表示字符序列。 定长编码—用一组固定长度的二进制位串来标记一组对象。长度为n的二进制串可标记2n个不同对象。 不定长编码—用可变长度的二进制位串来标记一组对象。 D:10 C:01 B

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档