满足五条性质:
1. 根节点一定是黑色
2. 叶节点一定是黑色空心
3. 节点非黑即红
4. 红色节点孩子节点一定是黑色的
即不会出现连续的红色节点
5. 任意一个节点到叶节点路径上黑色节点数量一样多
右旋操作:
1. 该节点和左孩子断开连接
2. 左孩子替代该节点位置
3. 左孩子的右节点成为原节点的左孩子
4. 原节点成为左孩子的右孩子
插入操作:
1. 按照二叉查找树的方式插入
2. 将插入的新节点染红
3. 如果其和parent节点都为红色,则需要双红修正
双红修正
情况1:uncle节点存在且为红色
1.parent和uncle都调整为黑色,grandparent调整为红色,node设置为grandparent
2. 检查当前node也就是grandparent是否为根节点,如果不是继续调整
情况2:uncle节点不存在或者为黑色
情况2.1:node为parent的左孩子
1.parent染黑,grandparent染红
2. grandparent右旋
情况2.2:node为parent的右孩子
1. node染黑,grandparent染红
2. parent左旋,grandparent右旋
标签:node,黑色,parent,孩子,红黑树,grandparent,数据结构,节点
From: https://www.cnblogs.com/toriyung/p/18190499