- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
树应用(队膻叉树)
* * 二叉排序树 授课人: 高建君 已知一棵度为m的树中有n1个度为1的结点,n2个度为2的结点,……,nm个度为m的结点,问树中有多少个叶子结点? 总结点数=所有结点的总度数+1 =(n1*1+n2*2+n3*3+…+nm*m)+1 叶子结点=总结点数-(n1+n2+n3+…+nm) 如:度为4的树中有2个度为1的点,2个度为2的点,1个度为4的点,问共有多少个结点?有多少个叶子结点? 二叉排序树(Binary Sort Tree):又称二叉查找(有哪些信誉好的足球投注网站)树(Binary Search Tree)。 其定义为:二叉排序树或者是空树,或者是满足如下性质的非空二叉树: ①若它的左子树非空,则左子树上所有结点的值均小于根结点的值; ②若它的右子树非空,则 右子树上所有结点的值均大 于根结点的值; ③左、右子树本身又各是 一棵二叉排序树。 上述性质简称二叉排序树性质(BST性质),故二叉排序树实际上是满足BST性质的二叉树。 一、定义 二叉排序树的特点:由BST性质可得 ①二叉排序树中任一结点x,其左(右)子树中任一结点y(若存在)的关键字必小(大)于x的关键字。 ②二叉排序树中,各结点关键字是唯一的。 ? 注意: 实际应用中,可将二叉排序树定义中BST性质①里的“小于”改为“小于等于”,或将BST性质②里的“大于”改为“大于等于”,甚至可同时修改这两个性质。 ③按中序遍历该树所得到的中序序列是一个递增有序序列。 中序序列: 2,3,4,5,7,8 输入待查找的关键字K 若树不为空,则若给定K值等于根结点,查找成功,返回根结点的指针 若给定值小于根结点,则在根结点左子树继续查找 若给定值大于根结点,则在根结点右子树继续查找 重复以上(2)(3)(4)操作,直到找到或为空结束。 算法如下: 二、二叉排序树的查找算法 type point =^node ; node=record da : datatype ; left , right : point ; end; function search ( bst:point; k:datatype) : point ; begin if bst= nil then begin ; exit ; end else begin if k=bst^.da then begin search :=bst; exit; end{递归终结条件} if k bst^.da then search := ; {在左子树中查找} if kbst^.da then search:= ; {在右子树中查找} end; end; search :=nil search(bst^.left,k) search(bst^.right,k) 若查找成功,则是从根结点出发走了一条从根到待查结点的路径。 若查找不成功,则是从根结点出发走了一条从根到某个叶结点的路径。 与二分查找类似,和关键字比较的次数不超过树的深度。 二叉排序树查找成功的平均查找长度: 在等概率假设下,(a)图平均查找长度为: ? 在等概率假设下,(b)图平均查找长度为: ????????ASLb=(1+2+3+4+5+6+7+8+9+10)/10=5.5 三、二叉排序树的插入和生成 1、 二叉排序树插入算法: 设插入一个结点s,若原树为空,则s结点为根结点; 若二叉排序树不为空,则将待插的结点值和根结点的值比较: (i)若二者相等,则说明树中已有此值,无须插入。 (ii)若s^.dabst^.da,则将其插入根的左子树中。 (iii)若s^.dabst^.da,则将其插入根的右子树中。 请写出插入过程的算法 递归算法: Procedure insert(var bst:point;s: point ) ; begin if bst=nil then else if s^.dabst^.da then
文档评论(0)