作者主页: 作者主页
本篇博客专栏:C++
创作时间 :2024年7月29日
1.红黑树的概念
红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的
2.红黑树的性质
关于红黑树,都有什么性质呢?下面我们来一一列举。
- 对于一个节点,不是红色就是黑色。
- 根节点必须是黑色的
- 如果一个节点是红色的,则他的两个孩子节点必须是黑色的
- 对于每个节点,从该节点到达该其所有的后代叶节点的简单路径上,均包含相同数目的黑色节点
- 每个叶子节点都是黑色的,此处的叶子节点指的是空节点。
那么我们来想一下,为什么满足以上所有条件之后,这个子树的最长路径中节点之和不会超过最短路径中节点个数之和的两倍。
- 最短路径:上述规定4中我们说过,每个节点到叶子节点,均包含相同个数的黑色节点,所以最短路径不就是一条只有黑色节点的路径嘛,因为黑色节点必须包含嘛,所以不包含红色就是最短的
- 最长路径: