- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
查找 第 8 章 查找 数 据 结 构 8.2 基于线性表的查找 线性表的三种查找方法比较 因此,对于不同的表长n、不同的表结构和表存储结构,应采用不同的查找方法。 次之 最小 最大 ASL 顺序、链式 顺序 顺序、链式 表的存储 表间有序 有序 有序、无序 表的结构 分块查找 折半查找 顺序查找 第 8 章 查找 数 据 结 构 8.3 基于树的查找 ①二叉排序树 ②二叉平衡树 ③B-树 ④B+树 ⑤键树 第 8 章 查找 数 据 结 构 8.3 基于树的查找 ①二叉排序树 定义: 二叉排序树或者是一棵空树;或者 是具有如下特性的二叉树: 1. 若它的左子树不空,则左子树上所有 结点的值均小于根结点的值; 3. 它的左、右子树也都分别是二叉排序树。 2. 若它的右子树不空,则右子树上所有 结点的值均大于根结点的值; 第 8 章 查找 数 据 结 构 8.3 基于树的查找 50 30 80 20 90 10 85 40 35 25 23 88 例如: 是二叉排序树。 66 不 ①二叉排序树 第 8 章 查找 数 据 结 构 8.3 基于树的查找 ①二叉排序树 查找算法 若给定值等于根结点的关键字,则查找成功; 若给定值小于根结点的关键字,则继续在左子树上进行查找; 若给定值大于根结点的关键字,则继续在右子树上进行查找。 否则, 若二叉排序树为空,则查找不成功; 在二叉排序树上进行查找,类似折半查找 50 30 80 20 90 85 40 35 88 32 第 8 章 查找 数 据 结 构 8.3 基于树的查找 例如: 二叉排序树 查找关键字 == 50 , 35 , 90 , 95 30 80 20 90 85 40 35 88 32 50 50 30 40 35 50 80 90 ①二叉排序树 查找算法 失败 第 8 章 查找 数 据 结 构 8.3 基于树的查找 从上述查找过程可见,在查找过程中,生成了一条查找路径: 从根结点出发,沿着左分支或右分支逐层向下直至关键字等于给定值的结点; 从根结点出发,沿着左分支或右分支逐层向下直至指针指向空树为止。 ——查找成功 ——查找不成功 ①二叉排序树 查找算法 第 8 章 查找 数 据 结 构 8.3 基于树的查找 ①二叉排序树 查找算法 --递归 ①二叉排序树 查找算法 --非递归 第 8 章 查找 数 据 结 构 8.3 基于树的查找 ①二叉排序树 插入算法 第 8 章 查找 数 据 结 构 8.3 基于树的查找 根据动态查找表的定义,“插入”操作 在查找不成功时才进行; 若二叉排序树为空树,则新插入的结点为新 的根结点;否则,新插入的结点必为一个新 的叶子结点,其插入位置由查找过程得到。 48 30 10 35 23 40 20 25 ①二叉排序树 插入算法 第 8 章 查找 数 据 结 构 8.3 基于树的查找 设 key = 30 30 48 ①二叉排序树 插入算法 第 8 章 查找 数 据 结 构 8.3 基于树的查找 void InsertBST(BSTree *bst, KeyType key) { BiTree s; if (*bst==NULL) { s=(BSTree)malloc(sizeof(BSTNode)); s- key=key; s-lchild=NULL; s-rchild=NULL; *bst=s; } else if (key (*bst)-key) InsertBST(((*bst)-lchild), key); else if (key (*bst)-key) InsertBST(((*bst)-rchild), key); } ①二叉排序树 生成算法 第 8 章 查找 数 据 结 构 8.3 基于树的查找 例如:设关键字输入顺序为: 45,24,53,12,28,90 28 12 53 24 45 90 24,45,53,90,12,28 28 90 45 12 24 53 所以,二叉排序树的形态完全由一个输入序 列决定,一个无序序列可以通过构造一棵二 叉排序树而得到一个有序序列。 void CreateBST(BSTree *bst) { KeyType key; *bst=NULL; scanf(%
文档评论(0)