数据结构:2-3树与红黑树

原创 2016年08月28日 21:28:46

2-3树之前没接触过,只是听说过红黑树,知道是平衡树的一种,在关注C++的STL里的set和map底层实现原理时第一次知道的,查了一下红黑树的资料,看的一通云里雾罩、不明所以。正好最近一个算法微信公众号里看了几篇讲数据结构的文章,先讲了2-3树,后讲了红黑树,一下子就明白了。

原来红黑树是2-3树德一种实现方式,2-3树是平衡树的一种概念和思路,目的是降低BST(平衡查找树)的插入后平衡化操作代价,但2-3树直接实现起来比较复杂,需要处理不同的节点类型,相比AVL查找树,2-3树多了一种节点类型,它有两个value和3个子女指针,子女指针指向由两个value分开的3个区间,然后定义一些列平衡化操作,使得在插入、删除时效率相比AVL树要高(只需修改和本节点相关的节点即可,而AVL要递归平衡化操作,在一些情况下可能会一直涉及到根节点)。

但2-3树插入操作造成的多次比较、拆分等也比较复杂,平衡操作有时会降低效率,作为改进的红黑树效率较高而且实现难度降低了很多。

分享一下这两篇文章,注意其代码实现是C#,没有指针哦。

2-3树

        浅谈算法和数据结构: 八 平衡查找树之2-3树

红黑树

        浅谈算法和数据结构: 九 平衡查找树之红黑树

版权声明:本文为博主原创文章,未经博主允许不得转载。

从2-3-4树谈到Red-Black Tree(红黑树)

译者:July。 出处:http://blog.csdn.net/v_JULY_v 。       在上一篇文章--从B树、B+树、B*树谈到R 树里已提到2-3-4树,那么本文,咱...

数据结构平衡树汇总(AVL 红黑树 Treap B树 B+树 2-3 2-4)

数据结构平衡树汇总(AVL 红黑树 Treap B树 B+树 2-3 2-4)AVLAVL树要求: (1) 任一节点的左子树深度和右子树深度相差不超过1 (2)其根的左右子树都是二叉平衡树 红黑...

【五】nginx的数据结构(3)——扩展红黑树

发扬我一贯的支线任务狂魔的作风,一晚上就完成了之前设想的红黑树扩展版本。     rbtree.h: /* * Copyright (C) Bipedal Bit * Verson 1.0.0.2...

数据结构拾遗(3) --红黑树的设计与实现(下)

完整源代码: http://download.csdn.net/detail/hanqing280441589/8450041 红黑节点设计与实现template class RedBlackNod...

数据结构之红黑树——BST的变种2

转自:http://hxraid.iteye.com/blog/611816 感谢原文作者的分享 红黑树的性质与定义 红黑树(red-black tree) 是一棵满足下...

《 常见算法与数据结构》平衡查找树(2)——红黑树(附动画)

红黑树介绍 红黑树是一种简单的实现2-3树的数据结构,它方便的把我们之前实现的二叉搜索树改造成了一棵2-3树。它的核心思想是用一条左倾链(红链)作为“胶水”把二叉树的两个节点给粘起来,形成一个3节...

【四】nginx的数据结构(2)——自己动手重写红黑树

费话不多说,上重写代码,这次姑且用英语写的注释当复习英语了。     rbtree.h: /* * Copyright (C) Bipedal Bit * Verson 1.0.0.1 */...

数据结构拾遗(2) --红黑树的设计与实现(中)

Insert完善    根据规则4, 新增节点必须为红; 根据规则3, 新增节点之父节点必须为黑. 示例:    (1)插入16(红色)/55(红色), 则既不用旋转, 也不用重新染色    (2)插...

用户空间使用Linux数据结构之红黑树(2)

1.5 RB树的操作 红黑树的最主要特征,在于其颜色满足特定的性质。普通的节点添加,极有可能破坏红黑树的性质,所以在添加红黑树节点时,需要将整个红黑树的颜色进行调整。 在理解插入、删除操作之前要先...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据结构:2-3树与红黑树
举报原因:
原因补充:

(最多只允许输入30个字)