DS06-树b-陈越主编-数据结构.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文档。上传文档
查看更多

第4章树§4.4二叉搜索树【定义】一个二叉搜索树是一棵二叉树,它可以为空。如果不为空,它将满足以下性质:非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。?二叉搜索树“二叉搜索树〔BST,BinarySearchTree〕”也称二叉排序树或二叉查找树,它是一种对排序和查找都很有用的特殊二叉树。18105207223015413350631479510211811个元素二分查找的判定树1

?二叉搜索树的动态查找?二叉搜索树作为抽象数据结构的定义与普通二叉树相同,但操作集中多了以下几个特别的函数:?PositionFind(ElementTypeX,BinTreeBST):从二叉搜索树BST中查找元素X,返回其所在结点的地址?PositionFindMin(BinTreeBST):从二叉搜索树BST中查找并返回最小元素所在结点的地址?PositionFindMax(BinTreeBST):从二叉搜索树BST中查找并返回最大元素所在结点的地址第4章树§4.4二叉搜索树?BinTreeInsert(ElementTypeX,BinTreeBST)?BinTreeDelete(ElementTypeX,BinTreeBST)2

?二叉搜索树的查找操作Find第4章树§4.4二叉搜索树查找从根结点开始,如果树为空,返回NULL,表示未找到关键字为X的结点。假设搜索树非空,那么根结点关键字和X进行比较,依据比较结果,需要进行不同的处理:?假设根结点键值小于X,满足条件的结点将不会出现在它的左子树,接下来的搜索只需在右子树中进行;?如果根结点的键值大于X,接下来的搜索将在左子树中进行;?假设两者比较结果是相等,搜索完成,返回指向此结点的指针。PositionFind(ElementTypeX,BinTreeBST){if(!BST)returnNULL;/*查找失败*/if(XBST-Data)returnFind(X,BST-Right);/*在右子树中继续查找*/Elseif(XBST-Data)returnFind(X,BST-Left);/*在左子树中继续查找*/else/*X==BST-Data*/returnBST;/*查找成功,返回找到的结点的地址*/}是否应领先考察空树?都是“尾递归”3

PositionIterFind(ElementTypeX,BinTreeBST){while(BST){if(XBST-Data) BST=BST-Right;/*向右子树中移动,继续查找*/elseif(XBST-Data) BST=BST-Left;/*向左子树中移动,继续查找*/else/*X==BST-Data*/returnBST;/*查找成功,返回找到的结点的地址*/}returnNULL;/*查找失败*/}?由于非递归函数的执行效率高,一般采用非递归的迭代来实现查找。?很容易将“尾递归”函数改为迭代函数第4章树§4.4二叉搜索树4

?查找最大和最小元素第4章树?最大元素一定是在树的最右分枝的端结点上?最小元素一定是在树的最左分枝的端结点上181015207229最左端点最右端点§4.4二叉搜索树5

第4章树§4.4二叉搜索树PositionFindMax(BinTreeBST){if(!BST)while(BST-Right)BST=BST-Right;/*沿右分支继续查找,直到最右叶结点*/returnBST;}PositionFindMin(BinTreeBST){if(!BST)returnNULL;/*空的二叉搜索树,返回NULL*/elseif(!BST-Left)returnBST;/*找到最左叶结点并返回*/elsereturnFindMin(BST-Left);/*沿左分支继续查找*/}代码4.16查找最小元素的递归函数代码4.17查找最大元素的迭代函数6

?二叉搜索树的插入第4章树§4.4二叉搜索树〖分析〗将元素X插入二叉搜索树B

文档评论(0)

展翅高飞2020 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档