2-3-4树与红黑树的对应关系

        2-3-4树和红黑树之间可以建立等价关系,2-3-4树的插入和删除过程也可以对应到红黑树的旋转与颜色变换过程。红黑树和2-3-4树之间的结点对应关系如下面的图:


图1    3结点与4结点的拆分


图2  一棵2-3-4树转换为红黑树


 图3  2-3-4树转换为红黑树的方式不唯一(图(来自REF[3])中的个别错误不用太计较^_^)

        算法导论中红黑树的类型定义是大致这样的:

typedef struct RBTreeNode{
	ElementType key;
	ColorType color;
	RBTreeNode *lchild,*rchild;
	RBTreeNode *p;
} RBTreeNode; 
        数据结构(C语言版)Eliis Horowitz Sartaj Sahni Susan Anderson-Freed一书中给出了一种类型定义:

typedef enum {red,black} color;
typedef struct red_black *red_black_ptr;
typedef struct red_black {
	element       data;
	red_black_ptr left_child;
	red_black_ptr right_child;
	color left_color;
	color right_color;	
};
第二种定义可以和上面的三幅示意图直接对应。可以看出,若在2-3-4树中的位于一个结点中的几个元素在拆分为单个红黑树结点时他们之间的连接线是红色的,而原来在2-3-4树中位于父子结点的元素在拆分结点以后形成的红黑树结点之间的连接线是黑色的。红色线可以看成虚线,表示在2-3-4树中原本是在一个结点内的;黑色线可以看成实线,对应2-3-4树中父亲节点与儿子结点的链接关系。在算法导论中的类型定义中,父子结点的链接不带颜色信息,而将颜色信息转化成结点本身的颜色信息, 这个本身的颜色信息可以表示为其父结点指向该结点的指针颜色。或者换个角度(个人观感)红黑树中黑色父节点与红色儿子结点的链接线即对应以上3幅图中的红色线条( BR->虚线/红线),而红色父节点与黑色儿子结点见的链接线对应以上3幅图中的黑色线条( RB->实线/黑线)。
REF:

1,算法导论

2,数据结构(C语言版) Ellis Horowitz Sartaj Sahni Susan Anderson-Freed

3,http://www.cnblogs.com/guoyiqi/archive/2011/06/08/2129310.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值