数数据结构课件ppt第章1.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第章1

第 九 章 查 找 3.二叉排序树的插入算法 根据动态查找表的定义,“插入”操作在查找不成功时才进行; 操作结果: 构造一个空的动态查找表DT。 InitDSTable(DT); 销毁动态查找表DT。 DestroyDSTable(DT); 初始条件: 操作结果: 动态查找表DT存在; 若DT中存在其关键字等于 key的数据元素,则函数值为该元素的值或在表中的位置,否则为“空”。 SearchDSTable(DT, key); 初始条件: 操作结果: 动态查找表DT存在,key 为和关键字类型相同的给 定值; 动态查找表DT存在, e 为待插入的数据元素; InsertDSTable(DT, e); 初始条件: 操作结果: 若DT中不存在其关键字 等于 e.key 的 数据元素, 则插入 e 到DT。 动态查找表DT存在,key 为和关键字类型相同的给 定值; DeleteDSTable(DT, key); 初始条件: 操作结果: 若DT中存在其关键字等于key的数据元素,则删 除之。 动态查找表DT存在,Visit 是对结点操作的应用函数; TraverseDSTable(DT, Visit()); 初始条件: 操作结果: 按某种次序对DT的每个结 点调用函数 Visit() 一次且至 多一次。一旦 Visit() 失败, 则操作失败。 二叉排序树(二叉查找树) 一、二叉排序树 (二叉查找树) 1.定义 2.查找算法 3.插入算法 4.删除算法 5.查找性能的分析 (1)若它的左子树不空,则左子树上 所有结点的值均小于根结点的值; 1.定义: 二叉排序树或者是一棵空树;或者 是具有如下特性的二叉树: (3)它的左、右子树也都分别是二叉 排序树。 (2)若它的右子树不空,则右子树上 所有结点的值均大于根结点的值; 50 30 80 20 90 10 85 40 35 25 23 88 例如: 是二叉排序树。 66 不 通常,取二叉链表作为 二叉排序树的存储结构 typedef struct BiTNode { // 结点结构 struct BiTNode *lchild, *rchild; // 左右孩子指针 } BiTNode, *BiTree; TElemType data; 2.二叉排序树的查找算法: 1)若给定值等于根结点的关键字,则查找成功; 2)若给定值小于根结点的关键字,则继续在左子树上进行查找; 3)若给定值大于根结点的关键字,则继续在右子树上进行查找。 否则, 若二叉排序树为空,则查找不成功; 50 30 80 20 90 85 40 35 88 32 例如: 二叉排序树 查找关键字 == 50 , 50 50 35 , 50 30 40 35 50 90 , 50 80 90 95 , 从上述查找过程可见, 在查找过程中,生成了一条查找路径: 从根结点出发,沿着左分支或右分支逐层向下直至关键字等于给定值的结点; 或者 从根结点出发,沿着左分支或右分支逐层向下直至指针指向空树为止。 ——查找成功 ——查找不成功 算法描述如下: Status SearchBST (BiTree T, KeyType key, BiTree f, BiTree p ) { // 在根指针 T 所指二叉排序树中递归地查找其 // 关键字等于 key 的数据元素,若查找成功, // 则返回指针 p 指向该数据元素的结点,并返回 // 函数值为 TRUE; } // SearchBST … … … … 否则表明查找不成功,返回 // 指针 p 指向查找路径上访问的最后一个结点, // 并返回函数值为FALSE, 指针 f 指向当前访问 // 的结点的双亲,其初始调用值为NULL if (!T) else if ( EQ(key, T-data.key) ) else if ( LT(key, T-data.key) ) else { p = f; return FALSE; } // 查找不成功 { p = T; return TRUE; } // 查找成功 SearchBST (T-lchild, key, T, p );

文档评论(0)

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

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

1亿VIP精品文档

相关文档