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

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树

红黑树

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

你可能感兴趣的:(C#,算法)