红黑树

红黑树,除了符合二叉搜索树的基本规则外,还添加了一个特性:

1、节点是红色或黑色

2、根节点是黑色

3、每个叶子节点都是黑色的空节点(NIL节点)

4、每个红色节点的两个子节点都是黑色的,(从每个叶子到根的所有路径上不能有两个连续的红色节点)

5、从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

 

红黑树的相对平衡

红黑树的关键特性:从根到叶子的最长可能路径,不会超过最短可能路径的两倍长,结果就是这个树基本是平衡的

为什么可以做到最长路径不超过最短路径的两倍呢?

性质四决定了路径不能有两个相连的红色节点

最短的可能路径都是黑色节点

最长的可能路径是红色和黑色交替

性质五所有路径都有相同数据黑色节点

这就表明了没有路径能多余任何其他路径的两倍长

变色

插入一个新节点时,有可能树不在平衡,可以通过三种方式的变换,让树保持平衡:换色、左旋转、右旋转

变色:为了重新符合红黑树的规则,尝试把红色节点变为黑色,或者把黑色节点变为红色

首先,新插入的新节点通常都是红色节点,因为在插入节点为红色的时候,有可能插入一次是不违反红黑树任何规则的,而插入黑色节点,必然会导致有一条路径上多了黑色节点,这是很难调整的,红色节点可能导致出现红红相连的情况,但是这种情况可以通过颜色调换和旋转来调整

左旋转:逆时针旋转红黑树的两个节点,使得父节点被自己的右孩子取代,而自己成为自己的左孩子

 右旋转:顺时针旋转红黑树的两个节点,使得父节点被自己的左孩子取代,而自己成为自己的右孩子

 

 

posted @ 2022-01-17 22:25  keyeking  阅读(72)  评论(0编辑  收藏  举报