红黑树

红黑树

是一种平衡的二叉查找树,说他平衡的意思是他不会变成“瘸子”,左腿特别长或者右腿特别长。 

特性:

1. 节点是红色或者黑色

2. 根节点是黑色

3. 每个叶子的节点都是黑色的空节点(NULL)

4. 每个红色节点的两个子节点都是黑色的。

5. 从任意节点到其每个叶子的所有路径都包含相同的黑色节点。

由于二叉查找树,容易出现以下情况,当查找元素7时候需要遍历0(n)次

 

 

 而红黑树是优化的二叉搜索树

 

 

 

 

 

 

红黑树(一棵自平衡的排序二叉树)五大特性:

1)每个结点要么是红的,要么是黑的。

2)根结点是黑的。

3)每个叶结点,即空结点是黑的。

4)如果一个结点是红的,那么它的俩个儿子都是黑的。

5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

场景

1)广泛用于C++的STL中,map和set都是用红黑树实现的.

2)著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块,进程的虚拟内存 区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址 虚拟存储区域,右指针指向相邻的高地址虚拟地址空间.

3)IO多路复用epoll的实现采用红黑树组织管理sockfd,以支持快速的增删改查.

4)ngnix中,用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器.

5)java中的TreeSet,TreeMap

 

posted @ 2019-10-17 20:03  暖暖-木木  阅读(182)  评论(0编辑  收藏  举报