红黑树
红黑树是一种可以实现自平衡的二叉查找树,具有以下4个规范:
1)所有节点都是红色或者黑色;
2)根节点和空节点必须为黑色;
3)父节点和子节点不能同时为红色,但可以同时为黑色;
4)从根节点出发,到任意叶子节点,数出的黑色节点数目必须一样。
红黑树的基本操作有两种:
1)recolor;
2)rotation.
插入节点到红黑树的流程:
S1: 将新节点标为红色,按照二叉查找树的插入规则插入到适合位置;
当父节点P和叔节点U均为红色
S2: 将P U变为黑色;
S3:如果祖父节点不是根节点,就将祖父节点G变为红色;
当P为红色,U为黑色,又分为以下4种情况:
1)左左(P为G的左孩子且新节点为P的左孩子):以P填充G的位置,原来的G作为P的右孩子,P和G交换颜色。
--------------->
2)左右(P为G的左孩子且新节点为P的右孩子):先让新节点填充P的位置、P作为新节点的左孩子,再按照左左的情况处理。
------->
------->
3)右右(P为G的右孩子且新节点为P的右孩子):先让P填充G的位置,再让G成为P的左孩子,最后PG交换颜色。
--------------->
4)右左(P为G的右孩子且新节点为P的左孩子):先让新节点填充P的位置、P作为新节点的右孩子,再按右右的情况处理。
--------------->
--------------->
为了加深记忆与理解,可以参考:
https://www.cs.usfca.edu/~galles/visualization/RedBlack.html

浙公网安备 33010602011771号