红黑树

待更。。。。

目录

一、什么是红黑树

红-黑树是这样的树:

        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

posted @ 2018-04-17 22:12  JQS  阅读(410)  评论(0编辑  收藏  举报