关于平衡二叉树的一句代码不是很理解
程序代码:void LeftBalance(PBSTree* T)
{
PBSTree 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;
}
}
在第二层switch中 的 case EH 这句代码 我并不理解。
因为如果要执行左平衡,那树的深度是肯定要改变的(但树的深度改变并不一定就会执行左平衡)
但是rd->bf=EQ 就意味着深度没有改变 在我看来是不会出现这种情况的啊。。。
还是我哪里理解错了 谢大家帮我解释解释吧 困了一天了

