关于平衡二叉树的一句代码不是很理解
程序代码:
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 就意味着深度没有改变 在我看来是不会出现这种情况的啊。。。 还是我哪里理解错了 谢大家帮我解释解释吧 困了一天了