- 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
⑵ 当结点p只有左子树或只有右子树时,可以将p的左子树或右子树直接改为其双亲结点f的左子树,对应的语句为:f - lchild = p - lchild;(或f - lchild = p - rchild;)free (p); ⑶ 当结点p既有左子树,又有右子树时,删除的方法就会较为复杂。中序遍历整个二叉排序树,得到一个按关键字有序排列的序列。在删除结点p后,应保持其他元素在该序列中的相对位置不变。 方法一:令p的左子树为f的左子树,而p的右子树为s的右子树。 方法二:用结点s的值代替结点p的值,然后将s删除。 5.二叉排序树的查找 ⑴ 若二叉排序树为空树,则查找失败。 ⑵ 若二叉排序树非空,将给定值key与根结点的关键字进行比较: ① 当key等于根结点关键字时,则查找成功; ② 当key小于根结点关键字时,在其左子树上继续查找; ③ 当key大于根结点关键字时,在其右子树上继续查找。 ⑶ 重复以上过程,直到查找成功或者要查找的子树为空(查找失败)。 二叉排序树的查找操作的算法描述如下: BSTree BSTSearch (BSTree BT, KeyType key) {//在根为BT的二叉排序树中查找关键字等于key的数据元素,若查找成功,返回指向该结点的指针,否则返回空 BSTree BT1; BT1 = BT; while (BT1) {if (BT1 - key == key) //若key等于BT1根结点的关键字 return BT1; //查找成功 if (key BT1 - key) //若key小于BT1根结点的关键字 BT1 = BT1 - lchild; //在左子树中查找 else BT1 = BT1 - rchild; } //若key大于BT1根结点的关键字,则在右子树中查找 return NULL; } //查找失败 当关键字按升序或降序输入时,生成的二叉排序树是一棵单支树,树的深度等于结点个数,它的平均查找长度与顺序查找相同,这是最坏的情况。在最好情况下,生成的二叉排序树与二分查找的判定树形态相似,此时它的平均查找长度与折半查找相同。 二、平衡二叉树 1.平衡二叉树的定义 2.平衡二叉树的调整方法 1.平衡二叉树的定义 平衡二叉树又称为AVL树。一棵非空的平衡二叉树应具有下列性质: ① 左子树与右子树的高度之差的绝对值小于等于1; ② 左子树和右子树都是平衡二叉树。 结点的左子树深度与右子树深度之差称为结点的平衡因子。 typedef struct AVLNode {KeyType key; //关键字域 int bf; //平衡因子 struct AVLNode *lchild, *rchild; //左、右孩子指针 }AVLNode, *AVLTree; 平衡二叉树的结点类型定义: 2.平衡二叉树的调整方法 在一棵平衡二叉树中插入一个结点时,使该二叉树失去平衡,假设最低层失衡结点为A,根据新插入结点的位置不同,相应的调整方法可分为以下四种。 (1)LL型 (2)RR型 (3)LR型 (4)RL型 (1)LL型 当在结点A的左孩子的左子树中插入新结点S时,结点A的平衡因子由1变为2,导致二叉树失衡。 将结点A作为B的右孩子,将B原来的右子树BR作为A的左子树,相当于以B为轴对结点A做了一次向右的顺时针旋转。 (2)RR型 当在结点A的右孩子的右子树中插入新结点S时,结点A的平衡因子由-1变为-2,导致二叉树失衡。 将结点A作为B的左孩子,将B原来的左子树BL作为A的右子树,相当于以B为轴对结点A做了一次向左的逆时针旋转 。 (3)LR型 有3种情况(调整方法相似): ?在C的左子树CL下插入S(以此为例) ?在CR下插入新结点 ?B的右子树为空,C本身就是插入的新结点 首先将B作为C的左子树,将C原来的左子树CL作为B的右子树;然后将A作为C的右子树,将C原来的右子树CR作为A的左子树,相当于对B做了一次向左的逆时针旋转,对A做了一次向右的顺时针旋转。 (4)RL型 有3种情况(调整方法相似): ?在C的左子树CL下插入S(以此为例) ?在CR下插入新结点 ?B的左子树为空,C本身就是插入的新结点 首先将B作为C的右子树,将C原来的右子树CR作为B的左子树;然后将A作为C的左子树,将C原来的左子树CL作为A的右子树,相当于对B做了一次向右的顺时针旋转,对A做了一次向左的逆时针旋转 。 任务四 哈希查找 一、哈希表的基本概念 二、构造哈希函数的方法 三、处理冲突的方法 四、哈希表的查找及分析 一、哈希表的基本概念 哈希(Hash)函数:如果在关键字与数
文档评论(0)