算法8--红黑树

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7
由归纳假设知,以y为根的子树中至少包含:
2bh ( x ) 1 2bh ( x )1
以x根的子树中至少包含:
个结点。
(2bh ( x )1 1) (2bh ( x )1 1) 1 2bh ( x ) 1
个结点。由数学归纳法即知上述结论成立。
(3)红黑树的高度为h,由红黑树的性质(3)和
4
红黑树表示的有序集的类型: ORDERED_SET=↑rbnodetype;
5
根据红黑树的“红黑性质”,可推出 红黑树具有以下的平衡树性质:任意一棵 有n个结点(不包括前端结点)的红黑树的高 度至多为2log(n+1)。 讨论:首先证明在以红黑树中任一结点x为 根的子树中,至少包含2bh(x) -1个结点,其 中bh(x)为结点x的黑高度。对结点J的高度 用数学归纳法:
性质(4)可知,从根结点到任何一个前端结点的 路径上至少有一半的结点(不包含根结点)是黑 结点。因此,红黑树的黑高度至少为h/2.可知Байду номын сангаас
n 2h / 2 1即h 2 log( n 1)
8
2、旋转变换
在红黑树中用二叉搜索树的插入或删 除运算插入或删除一个元素后,我们可以 通过改变某些结点的颜色,或改变某些结 点的指针来维持红黑性质。改变结点指针 时要用到结点的旋转变换,其目的是调整 结点的子树高度,并维持二叉搜索树性质, 即结点中元素的中序性质。
2
黑高度:从红黑树中任一结点x出
发,到达一个前端结点的任意一条
路径上(不包括结点x)的黑结点个数
称为结点x的黑高度,记作 bh(x)。 红黑树的黑高度:为其根结点的黑 高度。
3
用红黑树来存储有序集中的元素时, 其结点类型可说明为:
type rbnodetype=record element:elementtype; leftchild,rightchild,parent:↑rbnodetype; color:(red,black) end;
红黑树
1、红黑树的定义和性质
红黑树是一类特殊的二叉搜索树,其中 每个结点被“染成”红色或黑色。若将 二叉搜索树结点中的nil指看作是指向一 个空结点,则称这类空结点为二叉搜索 树的前端结点,并规定所有前端结点的 高度为-1。
1
红黑树是一棵满足下面“红黑性质” 的染色二叉搜索树。
性质1:每个结点被染成红色或黑色; 性质2:每个前端结点为黑色结点; 性质3:红结点的儿子结点均为黑结点; 性质4:在从任一结点到其子孙前端结点 的所有路径上应该有相同个数 的黑结点。
12
14
15
16
• 实验:建立红黑树,完成插入和删除算 法。
17
6
证明:
(1)对于前端结点x,其高度为-1,其黑高度 bh(x)=0,此时子树中结点个数为20-1=0。当结 点x的高度为0时,其两个儿子结点均为前端结 点,故其黑高度为bh(x)=1。此时,以x为根的子 树中恰好含有21-1=1个结点; (2)当结点x的高度大于0时,它有两个儿子结点。 当其儿子结点y为红结点时:bh(y)=bh(x)当其儿 子结点y为黑结点时:bh(y)=bh(x)-1由于结点y的 高度小于结点x。
9
旋转变换分为左旋转和右旋转两种类型,如图 5—12所示。
变换是通过修改结点x和y的有关指针来实现的。
10
11
3、插入运算
往红黑树表示的有序集插入一个元素的运 算,在最坏情况下用O(logn)时间就可完成。首 先将元素x插入红黑树,并将存储元素x的树结 点着成红色。为了使插入一个元素后的红黑树 仍满足红黑性质,必须对一些结点进行旋转变 换或重新着色。在红黑树中进行元素插入的运 算可实现如下:
相关文档
最新文档