- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
二叉排序树典型实例.ppt
二叉排序树
动态查找表结构 —— 二叉排序树(又称二叉搜索树)
以关键码值为结点的二叉树
如果任一结点的左子树非空,则左子树中的所有结点的关键码都小于根结点的关键码;
如果任一结点的右子树非空,则右子树中的所有结点的关键码都大于根结点的关键码。
二叉排序树的存储结构(链式)
struct BinSearchNode;
typedef struct BinSearchNode * PBinSearchNode;
struct BinSearchNode
{
KeyType key; /* 关键码值*/
PBinSearchNode llink, rlink; /* 二叉树的左、右指针 */
};
typedef struct BinSearchNode * BinSearchTree /*二叉排序树*/
typedef BinSearchTree * PBinSearchTree;
二叉排序树的检索
二叉排序树中查找某个结点的过程和二分法检索相似,也是逐步缩小检索范围的过程。
if (node.value == key) found
else
if ( key node.value)
binSearch(key, node.rightChild);
else
binSearch(key, node.leftChild);
二叉排序树的插入与构造
如果二叉排序树为空,则新结点作为根结点。
如果二叉排序树非空,则将新结点的关键码与根结点的关键码比较,
若相等表示该结点已在二叉排序树中;若小于根结点的关键码,则将新结点插入到根结点的左子树中;
否则,插入到右子树中。
子树中的插入过程和树中的插入过程相同,如此进行下去,直到找到该结点,或者直到左或右子树为空二叉树,新结点插入成为叶子结点为止。
二叉排序树的删除
为了删除一个二叉树中的结点,必须首先找到这个结点,然后选择下面给出两种方法删除之,以保证删除后仍满足二叉排序树的定义。
第一种方法∶
(1) 如果被删除结点p没有左子树,则用p的右子女代替p即可。
(2) 否则,在p的左子树中,找出关键码最大的一个结点r (r处于p的左子树中最右下角的位置,r一定无右子女),将r的右指针指向p的右子女,用p的左子女代替p结点。
Delete Key=10
18
二叉排序树的删除(续)
第二种方法∶
如果被删除结点p没有左子树,则用p的右子女代替p即可(同第一种方法的)。
同第一种方法找到最大的r结点,用r结点代替被删除的结点p,p原来的左右子女不变。并且用原来r的左子女代替原来的r结点。
Delete Key=10
18
最佳二叉排序树 —— n个结点按不同的次序插入到二叉排序树中,可能得到n!棵二叉排序树。
最佳二叉排序树(续)
在扩充二叉排序树里,检索一个关键码的平均比较次数为:
检索中平均比较次数最小,即E(n)最小的二叉排序树称作最佳二叉排序树。
最佳二叉排序树的构造
(1) 先将字典元素关键码排序。
(2) 对每个关键码按二分法在排序关键码序列中执行检索,将检索中遇到的还未在二叉排序树中的关键码插入二叉排序树中。
—— 按二分查找中所遇到的节点依次插入二叉排序树。
举例
对于K={27,73,10,5,18,41,99,51,25},构造最佳二叉排序树的过程如下:
首先将它们排序为:5,10,18,25,27,41,51,73,99,
然后从空二叉树出发,在排序的关键码序列中用二分法检索5,检索中遇到的结点为27,10,5,将这三个结点插入二叉排序树。
再检索第二个结点10,遇到的结点为27,10,二叉排序树中已经有这两个结点。
再检索第三个结点18,…。
得到的插入次序为27,10,5,18,25,51,41,73,99。
您可能关注的文档
最近下载
- 异常子宫出血诊断与治疗指南(2022更新版).pptx VIP
- 2025【比亚迪汽车SWOT、PEST分析3600字】.docx VIP
- 专题03配方法的十大应用(举一反三专项训练)数学人教版九年级上册【附答案】.pdf
- 小学英语语法课件-人称代词课件(全国通用版)(共90张PPT).pptx VIP
- 2005斯马鲁森林人维修手册.pdf VIP
- 新解读《GB_T 25921 - 2010电气和仪表回路检验规范》最新解读.docx VIP
- 大气渐变公司简介企业宣传PPT模板.pptx VIP
- 保险行业大数据风控模型构建与应用方案.doc VIP
- 企业宣传模具公司简介ppt模板.pptx VIP
- 六年级上册数学《分数除法》分数除法知识点整理.pdf VIP
文档评论(0)