红黑树原理和构建红黑树

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_44065088/article/details/102648384

红黑树是一种二叉搜索树  有红节点和黑结点  同时又是一种自平衡得二叉搜索树 (但是是一种弱平衡,插入删除查找可以采用这种数据结构),意思就是说如果结点

数目一样。红黑树得高度会 >= 平衡二叉树得高度。

二叉搜索树有得特点 ,红黑树都有。

同时还会加上这几个特点:

1:结点是红色 或者黑色

2:所有得叶子结点都是黑结点(NULL)

3:根节点必须是 黑色结点

4:红节点子结点 必须是两个黑结点(从一个叶子(NULL)到根结点得路劲上不可能有两个相邻得红结点)

5:每个叶子节点到根节点得路劲上,黑结点得个数一样

红黑树得构建 (这里我们了解原理即可,待会儿会解释为什么)

构建原理 想必大家都明了了把,所以代码实现相对复杂,我们直接来讨论应用

  • 广泛用于C++的STL中,map和set都是用红黑树实现的.(实际开发中直接用这两个容器就行了)
  • 著名的linux进程调度Completely Fair Scheduler,用红黑树管理进程控制块,进程的虚拟内存区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间.
  • IO多路复用epoll的实现采用红黑树组织管理sockfd,以支持快速的增删改查.
  • ngnix中,用红黑树管理timer,因为红黑树是有序的,可以很快的得到距离当前最小的定时器.
  • java中TreeMap的实现.

以前的博客都没有图,所以没什么人看和点赞,以后我会学习这个编辑器怎么用的,谢谢大家支持

猜你喜欢

转载自blog.csdn.net/qq_44065088/article/details/102648384