- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析-10红黑树.ppt
算法设计与分析 第九章 红黑树 红黑树的概念和性质 红黑树的旋转操作(过程及分析) 红黑树的插入操作(过程及分析) 红黑树的删除操作(过程及分析) 程序演示及说明 二叉查找树的概念和性质 二叉查找树: (1)一个结点x的域:key,left,right和p。 (2)二叉查找树的性质: 设x为二叉查找树中的一个结点。如果y 是x的左子树中的一个结点,则key[y]≤key[x];如果y 是x的右子树中的一个结点,则key[y]≥key[x]。 中序遍历算法 因为某子树根的关键字在被印出时是介于其左子树中的关键字和其右子树中的关键字之间,所以称为中序遍历算法. INORDER-TREE-WALK(x) 1 if x≠NIL 2 then INORDER-TREE-WALK(left[x]) 3 print key[x] 4 INORDER-TREE-WALK(right[x]) 中序遍历算法 见如下的二叉查找树: 将根节点指针设为上面程序的参数,则最终的输出结果为有序排列的一组数: 2 3 5 5 7 8 二叉查找树的查找算法 查找关键字为k的节点:根据二叉查找树的性质,从根节点开始查找,对碰到的每个节点x,比较k和key[x],若k=key[x],返回x;若kkey[x],继续查找x的左子树;否则继续查找x的右子树. TREE-SEARCH(x, k) 1 if x=NIL or k=key[x] 2 then return x 3 if kkey[x] 4 then return TREE-SEARCH(left[x], k) 5 else return TREE-SEARCH(right[x], k) 二叉查找树的查找算法 最小元素:从根节点开始,沿各节点的左指针查找下去,直至遇到NIL为止. TREE-MINIMUM(x) 1 while left[x] ≠ NIL 2 do x left[x] 3 return x 最大元素(TREE-MAXIMUM):和上述算法对称。 二叉查找树的查找算法 给定一个二叉查找树中的节点,有时候要求出在中序遍历下的前趋或后继。 节点的前趋:如果所有的关键字均不同,某节点x的前趋即具有小于key[x]中的关键字中最大者的那个节点。 节点的后继:某节点x的后继即具有大于key[x]中的关键字中最小者的那个节点。 根据二叉树的结构我们可一不用做比较就可以找到某节点的前趋或后继。下面的过程对二叉查找树中的某节点x返回其后继(如果存在的话),或NIL(如果x有树中最大的关键字的话)。 节点的后继 TREE-SUCCESSOR(x) 1 if right [x] ≠NIL 2 then return TREE-MINIMUM(right [x]) 3 y p[x] 4 while y ≠NIL and x =right[y] 5 do x y 6 y p[y] 7 return y 节点的后继 TREE-SUCCESSOR的代码中包含两种情况. 如果节点x的右子树非空,则x的后继即是右子树中的最左点,在第2行中通过调用TREE-MINIMUM(right[x])可以找到这个节点.另一方面,如果节点x的右子树为空且x有后继y.则y是x的最低的一个祖先节点,且y的左儿子也是x的祖先. 节点的前趋(TREE-PREDECESSOR):与上述方式对称 二叉查找树的查找算法 时间性能分析: 时间性能? 如何改进? 二叉查找树的插入和删除操作 除完成简单的插入或删除操作外,还需要什么操作? 后面结合红黑树操作一起介绍。 一、红黑树的概念和性质 红黑树: 一种“平衡的” 二叉查找树。一个结点的域增加一位存储结点的color,具体可以是RED或BLACK。 (1) 红黑树的性质: ①每个结点或是红的,或是黑的; ②每个叶结点(NIL)是黑的; ③如果一个结点是红的,则它的两个子女都是黑的; ④从某一结点到达其子孙叶
文档评论(0)