2-3-4树的实现通常需要多个类(2NODE,3NODE,4NODE),或者只使用一个NODE,该节点具有一组项目。如果使用多个类,则浪费大量时间构造和销毁节点实例,并且重新父级化它们很麻烦。如果使用单个类并使用数组来保存项目和子节点,那么您要么不断调整数组大小,这同样是浪费的,要么会浪费超过一半的内存空间用于未使用的数组元素。与红黑树相比,这不是很有效率。
红黑树仅具有一种节点结构。由于红黑树与2-3-4树具有二元性,因此RB树可以使用与2-3-4树完全相同的算法(无需像Cormen、Leiserson和Rivest描述的愚蠢混乱/复杂的实现,导致AA树不比2-3-4算法简单)。
因此,使用红黑树易于实现,而且内存/CPU效率高。 (AVL树也不错。它们产生更加平衡的树,很容易编写,但是由于过于频繁地维护仅略微更紧凑的树而变得不太有效率。)
哦,而且不会使用2-3-4-5-6等树,因为没有任何收获。 与2-3树相比,2-3-4的净增益是因为它们可以轻松地完成而无需递归(递归往往效率较低,特别是当它不能被编码为尾递归时)。但是,B树和B+树基本上是2-3-4-5-6-7-8-9等树,其中选择节点的最大大小n,以便在单个磁盘扇区中可以存储n个记录。(即每个磁盘扇区都是树中的一个节点,扇区的大小等于节点中存储的项目数。)这是因为在内存中线性搜索512条记录的时间仍然比遍历树中的下一级所需的磁盘搜索/提取快得多。O(512)仍然是O(1),因此对于树维护O(lg n)。