一种高效的二叉查找树红黑树
一种高效的二叉查找树——红黑树
红黑树的定义
查找是计算机信息管理的最常见操作。普通的二叉查找树的查找效率与树的深度有关。当它的左右子树深度相差较大时,查找效率就与单链表差不多。为提高查找效率,必须设法使二叉查找树的左、右子树的深度保持平衡。红黑查找树就是一种平衡的二叉查找树。
定义 一棵二叉查找树如果满足下列性质,则称为红黑树:
每个结点或是红色的,或是黑色的(增加一位表示颜 色的存储位);
每个空结点NIL是黑色的;
如果一个结点是红色的,则它的儿子应是黑色的;
从任何一给定结点到其子孙叶结点每条简单路径上都具有相同个数的黑结点。
图1给出了一棵红黑树的例子,其中黑结点用方框表示,红结点用椭圆表示。
2、例:
3、推论:若一棵二叉查找树是红黑树,则它的任一子树也必为红黑树。
4、红黑树的生成
可以从空树开始,通过逐步插入结点来生成一棵红黑树。
向一棵红黑树T中插入一个新结点x的过程如下:先按普通二叉查找树那样,在T中插入结点x,并将x着为红色。
为保证红黑树的的性质要求得以继续保持,一般需随时进行调整。具体可分为以下几种情况:
若x的父结点是黑色的,则插入过程结束。
若x的父结点是红色的,而x的叔叔结点y是黑色的,则需按图2或图3方式进行调整,其中子树α,β,γ,δ每一棵都有一个黑根。
若x的结点是红色的,而x的叔叔结点y也是红色的,则需按图4或图5方式进行
原创力文档

文档评论(0)