算法8红黑树.ppt
- 文档编号:2122416
- 上传时间:2022-10-27
- 格式:PPT
- 页数:17
- 大小:358KB
算法8红黑树.ppt
《算法8红黑树.ppt》由会员分享,可在线阅读,更多相关《算法8红黑树.ppt(17页珍藏版)》请在冰豆网上搜索。
红黑树红黑树1、红黑树的定义和性质、红黑树的定义和性质红黑树是一类特殊的二叉搜索树,其中红黑树是一类特殊的二叉搜索树,其中每个结点被每个结点被“染成染成”红色或黑色。
若将红色或黑色。
若将二叉搜索树结点中的二叉搜索树结点中的nil指看作是指向一指看作是指向一个空结点,则称这类空结点为二叉搜索个空结点,则称这类空结点为二叉搜索树的前端结点,并规定所有前端结点的树的前端结点,并规定所有前端结点的高度为高度为-1。
1红黑树是一棵满足下面红黑树是一棵满足下面“红黑性质红黑性质”的染色二叉搜索树。
的染色二叉搜索树。
性质性质1:
每个结点被染成红色或黑色;每个结点被染成红色或黑色;性质性质2:
每个前端结点为黑色结点;每个前端结点为黑色结点;性质性质3:
红结点的儿子结点均为黑结点;红结点的儿子结点均为黑结点;性质性质4:
在从任一结点到其子孙前端结点在从任一结点到其子孙前端结点的所有路径上应该有相同个数的所有路径上应该有相同个数的黑结点。
的黑结点。
2黑高度:
黑高度:
从红黑树中任一结点x出发,到达一个前端结点的任意一条路径上(不包括结点x)的黑结点个数称为结点x的黑高度,记作bh(x)。
红黑树的黑高度:
红黑树的黑高度:
为其根结点的黑为其根结点的黑高度。
高度。
3用红黑树来存储有序集中的元素时,用红黑树来存储有序集中的元素时,其结点类型可说明为其结点类型可说明为:
typerbnodetype=recordelement:
elementtype;leftchild,rightchild,parent:
rbnodetype;color:
(red,black)end;4红黑树表示的有序集的类型:
红黑树表示的有序集的类型:
ORDERED_SET=rbnodetype;5根据红黑树的根据红黑树的“红黑性质红黑性质”,可推出,可推出红黑树具有以下的平衡树性质:
任意一棵红黑树具有以下的平衡树性质:
任意一棵有有n个结点个结点(不包括前端结点不包括前端结点)的红黑树的高的红黑树的高度至多为度至多为2log(n+1)。
讨论:
讨论:
首先证明在以红黑树中任一结点首先证明在以红黑树中任一结点x为为根的子树中,至少包含根的子树中,至少包含2bh(x)-1个结点个结点,其其中中bh(x)为结点为结点x的黑高度。
对结点的黑高度。
对结点J的高度的高度用数学归纳法用数学归纳法:
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。
7由归纳假设知,以由归纳假设知,以y为根的子树中至少包含为根的子树中至少包含:
个结点。
个结点。
以以x根的子树中至少包含根的子树中至少包含:
个结点。
由数学归纳法即知上述结论成立。
个结点。
由数学归纳法即知上述结论成立。
(3)红黑树的高度为红黑树的高度为h,由红黑树的性质,由红黑树的性质(3)和和性质性质(4)可知,从根结点到任何一个前端结点的可知,从根结点到任何一个前端结点的路径上至少有一半的结点路径上至少有一半的结点(不包含根结点不包含根结点)是黑是黑结点。
因此,红黑树的黑高度至少为结点。
因此,红黑树的黑高度至少为h/2.可知可知82、旋转变换、旋转变换在红黑树中用二叉搜索树的插入或删在红黑树中用二叉搜索树的插入或删除运算插入或删除一个元素后,我们可以除运算插入或删除一个元素后,我们可以通过改变某些结点的颜色,或改变某些结通过改变某些结点的颜色,或改变某些结点的指针来维持红黑性质。
改变结点指针点的指针来维持红黑性质。
改变结点指针时要用到结点的旋转变换,其目的是调整时要用到结点的旋转变换,其目的是调整结点的子树高度,并维持二叉搜索树性质,结点的子树高度,并维持二叉搜索树性质,即结点中元素的中序性质。
即结点中元素的中序性质。
9旋转变换分为左旋转和右旋转两种类型,如图旋转变换分为左旋转和右旋转两种类型,如图512所示。
所示。
变换是通过修改结点变换是通过修改结点x和和y的有关指针来实现的。
的有关指针来实现的。
101133、插入运算、插入运算往红黑树表示的有序集插入一个元素的运往红黑树表示的有序集插入一个元素的运算,在最坏情况下用算,在最坏情况下用O(logn)时间就可完成。
首时间就可完成。
首先将元素先将元素x插入红黑树,并将存储元素插入红黑树,并将存储元素x的树结的树结点着成红色。
为了使插入一个元素后的红黑树点着成红色。
为了使插入一个元素后的红黑树仍满足红黑性质,必须对一些结点进行旋转变仍满足红黑性质,必须对一些结点进行旋转变换或重新着色。
在红黑树中进行元素插入的运换或重新着色。
在红黑树中进行元素插入的运算可实现如下:
算可实现如下:
12141516实验:
建立红黑树,完成插入和删除算法。
17
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 红黑树
![提示](https://static.bdocx.com/images/bang_tan.gif)