关于AVL Tree(平衡二叉树)的一点疑问,LR类型,要么添加到左子树或右子树导致平衡因子+1,我的理解是不会有添加之后平衡因子不改变的情况。也就是下面代码里switch里的EH情况。我是哪里理解有问题吗?
LeftBalance函数:
void LeftBalance(BSTree* T)
{
BSTree lc,rd;
lc = (*T)->lchild;
switch (lc->bf)
{
case LH:
(*T)->bf = lc->bf = EH;
R_Rotate(T);
break;
case RH:
rd = lc->rchild;
switch(rd->bf)
{
case LH:
(*T)->bf = RH;
lc->bf = EH;
break;
case EH:
(*T)->bf = lc->bf = EH;
break;
case RH:
(*T)->bf = EH;
lc->bf = LH;
break;
}
rd->bf = EH;
L_Rotate(&(*T)->lchild);
R_Rotate(T);
break;
}
}