学习红黑树建议看https://www.jianshu.com/p/e136ec79235c,没有代码,只讲最基本的原理。
但文中有一些问题,或者一些讲解不合理的地方,特做记录
1. 删除结点其实可以理解为:先替换,再平衡,后删除。替换只是值的替换,替换和被替换结点的颜色是不变的,替换后将要被删除的结点已经变成了叶子结点(文中称之为替换节点,不要纠结于这时候删除结点的位置不符合二叉查找树定义,因为它最后是要被删除的),这时候再考虑平衡问题,对照文中分情况讨论,平衡之后直接删除替换节点
2. 删除应该有点问题,删除情况2.1.1在P左旋后得到的应该是情景2.1.2中的三种子情况之一,因为SL不一定是叶子结点,还可能有红色子节点,这种情况下是可以转化为2.1.2.1和2.1.2.2的。2.2.1的转化也是同样问题