前言
回家了,陪了爸妈几天,手头上所有的事情全部放下。现在空闲了下来,继续保持学习状态。争取年前把书中前两部分搞定。年后,重点论文与源码深入,还有开始新的计划。
红黑树ngx_rbtree_t
ngx_rbtree_t是使用红黑树实现的关联容器,Nginx核心模块(定时器管理、文件缓存模块)在快速检索、查找场合下需要使用。
红黑树特性
红黑树是一种自平衡二叉查找树,每个节点都带有颜色属性。红黑树除了满足二叉查找树的一般要求之外,还有如下额外特性:
- 节点是红色或者黑色;
- 根节点为黑色;
- 所有叶子节点都为黑色(叶子是NIL节点,即”哨兵“);
- 每个红色节点的两个子节点都为黑色(每个叶子节点到根节点的所有路径上不能有两个连续的红色节点);
- 从任一节点到其每个叶子节点的所有简单路径都包含相同数目的黑色节点;
所有这些特性保证了红黑树的关键性质:从根节点到叶子节点的最长可能路径长度不大于最短可能路径的两倍。