红黑树(一) ——原理
在分析内核代码的过程中,发现很多内核子系统都会使用红黑树这个查找结构,本文由浅入深的总结了红黑树这个查找结构。
本文尽可能做到浅显易懂。最后,本文会基于C语言,自己实现一个红黑树,方便大家对其理解。
红黑树介绍
红黑树由Rudolf Bayer于1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees),1978年被Leonidas J. Guibas 和Robert Sedgewick改成一个比较摩登的名字:红黑树。
红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。那既然已经有二叉查找树,为什么还需要红黑树呢?
了解过二叉查找树的同学应该都知道,随着不断的插入和删除结点,二叉查找树有可能会退化成一个长链。所以就有了AVL树的概念,目的就是在插入和删除结点时,保证查找树的平衡。而红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。
自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。