我们添加一个数,失去平衡的一般是祖先节点
父节点、非祖先节点,都不可能失去平衡
失去平衡的方式一般有四种,我们按照失去平衡的祖先节点到添加的节点方向可以分为LL、RR、LR、RL。
LL:添加节点在失去祖先节点左边的左边
调整办法:进行右旋转
g.left = p.right
p.right = g
p成为这棵树的根节点
后期对其进行维护,把p、g……的parent属性进行修改,再更新其g、p的高度
RR:添加节点在失去祖先节点右边的右边
调整办法:进行左旋转
g.right = p.left
p.left = g
p成为这棵树的根节点
后期对其进行维护,把p、g……的parent属性进行修改,再更新其g、p的高度
LR、RL参照前面两种进行相应的操作