算法 -> 添加
1)添加节点为根节点(添加的元素为红节点,但是根节点需要为黑节点)
添加后变色 红变黑
2)添加节点的父节点为黑节点
直接添加
3)添加节点的父节点和叔父节点都为红节点
【父节点(变黑)和叔父节点(变黑)】
【祖父节点(变红) -> 自我修正】
4)添加节点的父节点为红节点 叔父节点为黑节点
添加节点为父节点左节点 父节点为祖父节点的左节点
【以父节点为参照物 右旋】
【父节点(变黑)和祖父节点(变红)分别变色】
5)添加节点的父节点为红节点 叔父节点为黑节点
添加节点为父节点右节点 父节点为祖父节点的右节点
【以父节点为参照物 左旋】
【父节点(变黑)和祖父节点(变红)分别变色】
6)添加节点的父节点为红节点 叔父节点为黑节点
父节点为祖父节点的右节点 添加节点为父节点左节点
【以子节点为参照物 右旋】
【以子节点为参照物 左旋】
【子节点(变黑)和祖父节点(变红)分别变色】
7)添加节点的父节点为红节点 叔父节点为黑节点
添加节点为父节点右节点 父节点为祖父节点的左节点
【以子节点为参照物 左旋】
【以子节点为参照物 右旋】
【子节点(变黑)和祖父节点(变红)分别变色】
举列子:
1,7,9,20,50,18,17,10,100;
图解:
End》》》》
当你的才华还撑不起你的野心的时候,
你就应该静下心来学习。