1.左旋
1.旋转非根节点
确定支点:从添加的节点开始,不断地往父节点找不平衡的节点
旋转步骤:
1.以不平衡的点作为支点
2.把支点左旋降级,变成左子节点
3.晋升原来的右子节点
2.旋转根节点
确定支点:从添加的节点开始,不断地往父节点找不平衡的节点
旋转步骤:
1.以不平衡的节点为支点
2.将根节点的右侧往左拉
3.原先的右子节点变成新的父节点,并把多余的左子节点让出,给已经降级的根节点的右子节点
2.右旋
1.旋转非根节点
确定支点:从添加的节点开始,不断地往父节点找不平衡的节点
旋转步骤:
1.以不平衡的点作为支点
2.把支点右旋降级,变成右子节点
3.晋升原来的左子节点
2.旋转根节点
确定支点:从添加的节点开始,不断地往父节点找不平衡的节点
旋转步骤:
1.以不平衡的点作为支点
2.将根节点的的左侧往右拉
3.原先的左子节点变成新的父节点,并把多余的右子节点出让,给已降级的根节点当左子节点
3.旋转方式判断
左左:当在根节点的左子树的左子树上插入新节点
同理可知左右、右右、右左
左左——右旋
左右——根结点左节点为支点左旋,以根结点为支点右旋
右右——左旋
右左——根结点右节点为支点右旋,以根结点为支点左旋