红黑树

红黑树

红黑树是一种自平衡的二叉查找树,每个节点都有一个存储值和颜色属性。红黑树满足以下五条性质: 每个节点不是红色就是黑色。 根节点必须为黑色。 如果一个节点是红色,则它的子节点必须是黑色(反之不一定...

更新于 2023-04-19
378

红黑树是一种自平衡的二叉查找树,每个节点都有一个存储值和颜色属性。红黑树满足以下五条性质:

  1. 每个节点不是红色就是黑色。
  2. 根节点必须为黑色。
  3. 如果一个节点是红色,则它的子节点必须是黑色(反之不一定成立)。
  4. 对于每个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。
  5. 空节点被认为是黑色节点。

红黑树可以在 O(log n) 时间内完成插入、删除和查找等基本操作,并能够保证最坏情况下运行时间与平均情况下的运行时间相当。因此,在需要进行动态数据结构维护的程序中广泛应用,如:C++ STL 中的 set 和 map 类型;Linux 的进程调度器 Completely Fair Scheduler (CFS) 使用了红黑树来对进程按照优先级排序;还可作为索引实现数据库查询等场景。

总之,红黑树的优点在于高效地维护数据的动态变化,并且能够保证算法的复杂度稳定。