记录一下学习AVL的理解
1. 左子树 < 根 < 右子树
2. 左右子树高度 <=1
2. 插入时如果平衡被破坏,通过左旋和右旋,配合摘叶操作重新平衡
3. 左旋:
3.1 右节点(k2)变成根节点
3.2 根节点(k1)变成右节点(k2)的左节点
3.3 右节点(k2)原来的左节点(k3)变成根节点(k1)的右节点,此步骤成为摘叶
如下图:
右旋类似,只不过是改变了方向,摘叶的时候,摘的是右节点。
有时候单个旋转并不能做到平衡,那么就需要左旋+右旋配合,一般成为双旋。
记录一下学习AVL的理解
1. 左子树 < 根 < 右子树
2. 左右子树高度 <=1
2. 插入时如果平衡被破坏,通过左旋和右旋,配合摘叶操作重新平衡
3. 左旋:
3.1 右节点(k2)变成根节点
3.2 根节点(k1)变成右节点(k2)的左节点
3.3 右节点(k2)原来的左节点(k3)变成根节点(k1)的右节点,此步骤成为摘叶
如下图:
右旋类似,只不过是改变了方向,摘叶的时候,摘的是右节点。
有时候单个旋转并不能做到平衡,那么就需要左旋+右旋配合,一般成为双旋。