ds9.2.1陆小马功钟浩.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9.2 动态查找表 二叉排序树 9.2 动态查找表 1. 动态查找表 2. 二叉排序树 1. 动态查找表 动态查找表除查找操作外,还可以进行插入和删除。 动态查找表本身是在查找过程中动态生成的。 动态查找表ADT定义。P226 2. 二叉排序树-概念 (1)什么是二叉排序树 P227 4 2 1 3 6 5 7 4 2 1 8 6 5 7 8 中序遍历二叉排序树,得到从小到大的有序序列。 2. 二叉排序树-查找 (2)查找算法 首先与根结点关键字比较,若相等则查找成功;否则根据大小关系在左子树或右子树上继续查找。 t-data t-data t =? 2. 二叉排序树-查找算法1 二叉排序树查找算法1 BstTree BstSearch ( BstTree t, ElemType x ) { if ( t==NULL ) return NULL; else if ( t-data==x ) return t; else if ( xt-data ) return BstSearch ( t-lchild, x); else return BstSearch ( t-rchild, x); } 继续在左子树查找 继续在右子树查找 2. 二叉排序树-查找算法2 查找过程正好走了一条从根结点到该结点的路径。若走到空指针则查找失败。 2. 二叉排序树-查找算法2 二叉排序树查找算法2 BstTree BstSearch ( BstTree t, ElemType x ) { p = t; while ( p ) { if ( p-data==x ) return p; //查找成功 else if ( xp-data ) p = p-lchild; else p = p-rchild; } return NULL; // 查找失败 } 2. 二叉排序树-插入 (3)插入 首先进行查找,如果找不到,则插入结点。 “找不到”时,查找过程必定走到某个空指针上,待插入结点就插入此处。 p t k s f f指向p的双亲 2. 二叉排序树-插入算法 BstTree BstInsert ( BstTree t, ElemType x ) { // 查找 x p = t; f = NULL; // f 指向p的双亲 while ( p ) { if ( p-data==x ) return p; //查找成功 else if ( xp-data ) { f = p; p = p-lchild; } else { f = p; p = p-rchild; } } } // 未找到,插入 x ? 2. 二叉排序树-插入算法 // 未找到,插入 x s = malloc(sizeof(BiNode)); s-data = x; s-lchild = s-rchild = NULL; if ( f == NULL ) t = s; // 插入s为根结点 else if ( x f-data ) f-lchild = s; else f-rchild = s; return s; // 返回插入结点 } 2. 二叉排序树-建立 (4)建立二叉排序树 开始时,二叉树为空,依次插入给定的关键字即可建立。 2. 二叉排序树-建立 例:给定关键字序列 {53,45,12,24,90,45,80}, 建立二叉排序树。 提示:从空二叉树开始,依次插入关键字。 53 45 90 12 24 80 2. 二叉排序树-删除 (5)删除 首先进行查找,若找到,则删除结点。 删除结点时需要修改 2. 二叉排序树-删除算法 BstTree BstDelete ( BstTree t, ElemType x ) { // 查找 x p = t; f = NULL; // f 指向p的双亲 while ( p ) { if ( p-data==x ) break; //查找成功,进行删除 else if ( xp-data ) { f = p; p = p-lchild; } else { f = p; p = p-rchild; } } } // 若找到,删除结点 if ( p != NULL ) …? 2. 二叉排序树-删除算法 被删除结点分三种情况: a) 叶子 b) 左子树或右子树为空 c) 左右子树都不空 f p (a) f p (b) f p f p f p f p (c) 2. 二叉排序树-

文档评论(0)

陆小马公主号 + 关注
实名认证
文档贡献者

陆小马 功钟浩 分享资源

1亿VIP精品文档

相关文档