AA树,红黑树的变种
CLRS(算法导论)上对RBT(红黑树,red-black tree)的讲解相当好;
我这里只能东施效颦,解释一下红黑树的变种,AA树;
正如RBT是由2-3-4树演化而来,AA树是2-3树的二叉形式;
给出AA树的定义:
1. AA树是一颗维护了结点颜色(黑高)的二叉搜索树;
2. 任意一叶结点(T.nil,哨兵)到根结点路径上黑结点个数相同(黑高相等,平衡原理);
3. 根结点为黑,叶结点(T.nil,哨兵)颜色为黑;
4. 红结点两子结点颜色为黑(子结点可能为叶结点);
5. 红结点不得作为黑结点左子结点(与RBT不同);
给出一个AA树样例:
为了分析方便,我们把样例转化为类2-3树形式,以便分析:
网上介绍AA树大部分都是维护了结点的黑高;
我这里沿用RBT的形式,维护结点的颜色;
AA树中的搜索很显然,与普通二叉搜索树一样;
下面给出两个大头:插入与删除;
插入:
参考CLRS,给出伪代码:
Inset(T,t)
y=T.nil
x=T.root
while x≠T.nil
y=x
if t.key<x.key
x=