title:红黑树基本的插入和删除操作
红黑树的的性质:
- 每个节点的颜色为黑色或红色
- 根节点和叶节点是黑色
- 红色节点的子节点必为黑色
- 每个节点到后代叶节点的简单路径上的黑色节点数目相同(黑高)
推论:含有n个节点的红黑树的高度至多为 2lg(n+1)
以下操作都是在以一个真实存在的黑色空节点为叶节点和根节点的父节点的基础上进行的(哨兵)
插入操作:
Step One:
用二叉搜索数的方式遍历红黑树,找到合适位置插入,并把该节点的颜色置为红色
由于新插入的节点为红色因此只可能违背 性质二中的第一条 或 性质三
因此Step Two 针对这两条性质对红黑树进行调整
Step Two:
-
如果将一个节点插入空树违背性质二中第一条,直接将该节点颜色置为Black
-
如果插入的节点的父节点为Red违背性质三*(六种情况,因为是相对应的,因此实际上为三种)*
我们不妨在这用字母代替相应的节点:X(插入的节点),P(X的父节点),U(X的叔节点),G(X的祖父节点),RT(整棵树的红色节点个数),BT(整棵树的黑色节点个数)