红黑树解析
红黑树定义和性质
红黑树是一种含有红黑结点并能自平衡的二叉查找树。它必须满足下面性质:
1:每个节点要么是黑色,要么是红色。
2:根节点是黑色。
3:每个叶子节点都是黑色。(叶子是NIL节点)
4:每个红色结点的两个子结点一定都是黑色。
5:任意一结点到每个叶子结点的路径都包含数量相同的黑结点。
应用:
- 广泛用于C ++的STL中,地图是用红黑树实现的;
- Linux的的进程调度,用红黑树管理进程控制块,进程的虚拟内存空间都存储在一颗红黑树上,每个虚拟内存空间都对应红黑树的一个节点,左指针指向相邻的虚拟内存空间,右指针指向相邻的高地址虚拟内存空间;
- IO多路复用的epoll采用红黑树组织管理sockfd,以支持快速的增删改查;
- Nginx中用红黑树管理定时器,因为红黑树是有序的,可以很快的得到距离当前最小的定时器;
- Java的TreeMap的实现;