二叉排序树典型实例.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文档。上传文档
查看更多
二叉排序树典型实例.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。

文档评论(0)

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

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

1亿VIP精品文档

相关文档