数据结构平衡二叉树的switch((*T->bf)

请问switch((*T->bf)为什么是T原来的平衡度,这个时候T不是已经插入成功了吗?不应该是插入新结点后的平衡度吗

img

void InsertAVL(BiTree *T,int e, bool *taller){
if(!*T)
{ //1.插入新结点,树“长高”,置taller为TRUE
//开辟一个新结点T;
*T=(BiTree)malloc(sizeof(BiTNode));
// 对新结点T的data赋值,并且让其左右子树指向为空,T的BF值为EH;
(*T)->data=e;
(*T)->lc=(*T)->rchild=NULL;
(*T)->bf=EH;
//新结点默认"长高"
*taller=TRUE;
}
else
{
if (e==(*T)->data)
{ //2.树中已存在和e有相同关键字的结点则不再插入
*taller=FALSE;
return FALSE;
}
if (e<(*T)->data)
{
//3.应继续在T的左子树中进行搜索
if(!InsertAVL(&(*T)->lc,e,taller))
//未插入
return FALSE;

        //4.已插入到T的左子树中且左子树“长高”
        if(*taller)
            //5.检查T的平衡度
            switch((*T)->bf)
        {
            case LH:
                //原本左子树比右子树高,需要作左平衡处理
                LeftBalance(T);
                *taller=FALSE;
                break;
            case EH:
                //原本左、右子树等高,现因左子树增高而使树增高
                (*T)->bf=LH;
                *taller=TRUE;
                break;
            case RH:
                //原本右子树比左子树高,现左、右子树等高
                (*T)->bf=EH;
                *taller=FALSE;
                break;
        }
    }
    else
    { //6.应继续在T的右子树中进行搜索
        //未插入
        if(!InsertAVL(&(*T)->rc,e,taller))
            return FALSE;
        //已插入到T的右子树且右子树“长高”
        if(*taller)
            // 检查T的平衡度
            switch((*T)->bf)
        {
            //原本左子树比右子树高,现左、右子树等高
            case LH:
                (*T)->bf=EH;
                *taller=FALSE;
                break;
            //原本左、右子树等高,现因右子树增高而使树增高
            case EH:
                (*T)->bf=RH;
                *taller=TRUE;
                break;
            // 原本右子树比左子树高,需要作右平衡处理
            case RH:
                RightBalance(T);
                *taller=FALSE;
                break;
        }
    }
}
return TRUE;

}