红黑树:
1.)带节点颜色属性的二叉搜索树
2.)确保树的高度为
h=O(logn)
红黑树属性:
- 每个节点要么是红色,要么是黑色
- 每个叶子节点(一定是NULL指针)一定是黑色
- 这意味着每个“真正”的节点都有两个孩子
- 红色节点的两个孩子都是黑色
- 这意味着树的任何路径上不可能存在两个连续的红色节点
- 从任意某个节点出发,到所有能到达的叶子节点的路径上的黑色节点数量相等
- 根节点是黑色
黑色节点的高度:
黑色节点的高度的定义为:黑色节点到叶子节点的路径长度
一个高度为
h
的节点,其黑色节点高度
可证明:一个拥有
n
个节点的红黑树,起高度
证明:
红黑树最差情况下的耗时
红黑树示例:
如何插入新的节点:
8
如何插入新的节点:
节点
11
不能为红色,违反第三条属性,一个红色节点的两个孩子节点都必须是黑色
节点
11
不能是黑色,违反第四条属性,从节点到所有叶子节点上的黑色节点的数量必须相等
所有,只能重新定义树的颜色了:
如何插入新的节点: 10
红黑树:旋转
旋转
旋转示例
相对于
9
<script type="math/tex" id="MathJax-Element-7">9</script>这个节点左旋