红黑树
待更。。。。
目录
一、什么是红黑树
红-黑树是这样的树:
1.每个节点不是红色就是黑色的;
2.根节点总是黑色的;
3.每个叶节点(NIL)都是黑色;
4.如果节点是红色的,则它的子节点必须是黑色的;
4.从根节点到叶节点或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑度)。
红黑树是一棵平衡二叉树,可以理解为平衡二叉树的特例。平衡二叉树是二叉树排序树(又叫二叉查找树)“平衡”得到的。所以二叉平衡树是二叉搜索树,所以红黑树也是二叉搜索树;
二、红黑树的基本操作
1、旋转
2、插入
3、删除
三、红黑树的应用
- 广泛用于C++的STL中,map和set都是用红黑树实现的.
- java中TreeMap的实现.
- 著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块,进程的虚拟内存区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间.
- IO多路复用epoll的实现采用红黑树组织管理sockfd,以支持快速的增删改查.
- ngnix中,用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器
推荐参考:https://blog.csdn.net/eson_15/article/details/51144079