- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 二叉平衡树的BF的值只可能为-1、0和1。二叉平衡树的构造过程中进行调整的方法共有四种。二叉平衡树的查找过程也与二叉排序树类似,从根结点开始,向左或右子树进行查找。 散列存储是一种存储方法,也是一种查找方法。散列存储通过对元素的关键字按给定函数进行计算,得到存储地址,此地址称为散列地址,用于计算地址的给定函数称为散列函数,用于存储元素的地址空间称为散列表。构造散列函数方法有直接定址法、数字分析法、平均取中法、折叠法和除留余数法。常用的解决冲突的方法有开放定址法、链地址法。平均查找长度等于查找每个元素时的比较次数之和除以所有元素的个数。 * 习题: 1. 请指出在顺序表{2、5、7、10、14、15、18、23、35、41、52}中,用拆半法查找关键码12需做多少次关键码比较。 ( ) A.2 B.3 C.4 D.5 答案是C。第一次和15比较;第二次和7比较;第三次和10比较;第四次和14比较;比较后结束,没找到。 * 2.对一棵查找树根结点而言,左子树中所有结点与右子树中所有结点的关键字大小关系是( ) A、小于 B、大于 C、等于、D、不小于 答案是A * 3.在一棵空的二叉查找树中依次插入关键字序列为20、30、8、12、34、5、60、5、1,29,请画出所得到的二叉查找树。 * 4.为什么有序的单链表不能进行折半查找? 答:因为链表无法进行随机访问,如果要访问链表的中间结点,就必须先从头结点开始进行依次访问,这就要浪费很多时间,还不如进行顺序查找,而且,用链存储结构将无法判定二分的过程是否结束,因此无法用链表实现二分查找。 5.将二叉排序树T的先序序列中的关键字依次插入一空树中,所得二叉排序树T与T是否相同?为什么? 答:这两棵二叉树完全相同。建立二叉排序树,每棵子树都是从上到下的建立过程;先序输出顺序:根,左,右。总是先输出根结点。它每棵子树的输出顺序也是从上到下的顺序。对二叉排序树来说用任何一种从上到下的输出序列,来构造二叉排序树形状都是相同的。例如二叉树的层序遍历序列。 * 由图9.4可以看出,对二叉排序树进行中序遍历,便可得到一个按关键码有序的序列,因此,一个无序序列,可通过构一棵二叉排序树而成为有序序列。 * 输入:45,24,55,12,37,53,60,28,40,70 45 24 55 12 37 60 53 28 40 70 (a) * 二.二叉排序树查找过程 从其定义可见,二叉排序树的查找过程为: ① 若查找树为空,查找失败。 ② 查找树非空,将给定值kx与查找树的根结 点关键码比较。 ③ 若相等,查找成功,结束查找过程, 否则, a.当给定值kx小于根结点关键码,查找将在以左子女为根的子树上继续进行,转① b.当给定值kx大于根结点关键码,查找将在以右子女为根的子树上继续进行,转① * 以二叉链表作为二叉排序树的存储结构,则查找过程算法程序描述如下: typedef struct NODE { ElemType elem; /*数据元素字段*/ struct NODE *lc,*rc; /*左、右指针字段*/ }NodeType; /*二叉树结点类型*/ * 【算法9.4】 int SearchElem(NodeType *t,NodeType **p,NodeType **q,KeyType kx) { /*在二叉排序树t上查找关键码为kx的元素,若找到,返回1,且q指向该结点,p指向其父结点;否则,返回0,且p指向查找失败的最后一个结点*/ int flag=0; *q=t; while(*q) /*从根结点开始查找*/ { if(kx(*q)-elem.key) /*kx大于当前结点*q的元素关键码*/ {*p=*q;*q=(*q)-rc; } /*将当前结点*q的右子女置为新根*/ else {if(kx(*q)-elem.key) /*kx小于当前结点*q的元素关键码*/ {*p=*q;*q=(*q)-lc;} /*将当前结点*q的左子女置为新根*/ else {flag=1;break;} /*查找成功,返回*/ } } /*while*/ return flag; } * 时间复杂度: 分析:在二叉排序树上进行查找的过程中,根结点为待查结点时,给定值同树中结点的比较次数仅为一次,待查结点位于最后一
您可能关注的文档
最近下载
- 城市道路交通事故地点文字表述方法研究.pdf VIP
- 新能源转换与控制技术风力发电(本科)樊.ppt
- 七年级英语上册期末专题训练(任务型阅读,首字母填空,完形填空)(有答案).pdf VIP
- 学术规范与论文写作(雨课堂)研究生 全部答案.doc VIP
- 2025年耐火材料行业分析.docx VIP
- 技术咨询合同简洁版模板5篇.docx VIP
- 2025-2026学年山东省青岛市八年级上学期期中模拟英语试题(含解析).docx VIP
- 日置 BT3564电池测试仪使用说明书.pdf VIP
- 上海三菱LEHY(C)电梯安装调试培训资料.ppt VIP
- 人教版(2025)高二生物选择性必修1稳态与调节期中达标测试卷A卷(含答案解析).pdf VIP
原创力文档


文档评论(0)