红黑树本质上是一种二叉查找树,在二叉查找树的基础上,引入了额外的规则,以保持平衡。这些规则包括:
- 每个节点,要么是红色,要么是黑色
- 根节点(图中最上面那个节点)永远是黑色。
- 所有叶子节点(图中的nil节点)都是黑色
- 每个红色节点的两个子节点一定都是黑色
- 从任意节点到其子数中,每个叶子节点的路径都包含相同数量的黑色节点。
为什么不使用普通的二叉树?
普通的二叉树如果它依次递增,会出现退化成链表的情况。所以说二叉树最坏情况下的查询的时间复杂度是O(n)
红黑树最坏情况下的时间复杂度是O(log n)
为什么不使用平衡二叉树?
平衡二叉树是更严格的平衡树,维护平衡的代价更高,因为它需要更多的旋转操作来确保平衡。相对而言,红黑树在保持平衡方面效率更高,因此插入和删除操作的性能更好