一、红黑树介绍
1.1 什么是红黑树
红黑树是一种自平衡二叉查找树,是计算机科学领域中的一种数据结构,
典型的用途是实现关联数组,存储有序的数据。
它是在1972年由Rudolf Bayer发明的,别称"对称二叉B树",
它现代的名字由 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。
它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的。
它可以在O(logn)时间内做查找,插入和删除,这里的n是树的结点个数。
红黑树和平衡二叉树(AVL树)都是二叉查找树的变体,但红黑树的统计性能要好于AVL树。
因为,AVL树是严格维持平衡的,红黑树是黑平衡的。
维持平衡需要额外的操作,这就加大了数据结构的时间复杂度,
所以红黑树可以看作是二叉搜索树和AVL树的一个折中,维持平衡的同时也不需要花太多时间维护数据结构的性质。
红黑树在很多地方都有应用,例如:
C++的STL,map和set都是用红黑树实现的。
著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块。
epoll在内核中的实现,用红黑树管理事件块。
nginx用红黑树管理timer等。
Java的TreeMap实现。
1.2 红黑树简介
R-B Tree,全称是Red-Black Tree,又称为“红黑树”,是一种特殊的二叉查