红黑树(Red Black tree)
一、红黑树的一些性质
1、红黑树是一颗自平衡的二叉查找树,通过给每个节点相应的颜色位(Red or Black)来保证整个的树的平衡。
2、红黑树在插入和删除时不像AVL树那样经常的需要调整,平衡性要求没有AVL树高。
3、根节点必须为黑色,红节点的孩子必须为黑色。
红黑树示例:
4、红黑树中空指针也是节点。
5、对于任何一个节,从该节点到其孩子中都包括相同数目的黑色节点,这点是保证平衡性的重要条件。
6、空指针代表的也是黑色节点。
7、由上可知红黑树的高度对多为:log⑵(n+1)。
8、红黑树的查找效率和AVL差不多。
9、Black Height:即经过多少个黑色节点
10、1)任何一个节点的左子树至少有个内部节点(internal nodes)。
原二叉树节点,叫做 internal node。
2)任何一个节点 x 的 bh(x)>=h(x)。
二、红色树的插入
1、根节点初始化为黑色
2、非根节点插入默认为红色
3、如果插入的节点的父节点是红色,就把父节点和其兄弟节点都换成黑色节点,再看父亲节点的父亲节点是不是根节点,如果不是,也需要重新着色。
4、如果其没有兄弟节点,就需要对其进行旋转,旋转方法参考AVL的LL、RR、LR、RL,然后重新进行着色。5)
5、重复这个过程
原视频:2021年最好懂的红黑树