#include "allinclude.h" //DO NOT edit this line
#define LH +1
#define EH 0
#define RH -1
void RightBalance(BBSTree &T)
{ // Add your code here
void R(BBSTree &p);
void L(BBSTree &p);
BBSTree lc,rd;
lc=T->rchild;
switch (lc->bf)
{
case RH: //若右高 RR型
T->bf=0;
lc->bf=0;
L(T);
break;
case LH: //左高 LR型
rd=lc->lchild;
switch(rd->bf)
{
case RH:
T->bf=LH;
lc->bf=EH;
break;
case EH:
T->bf=EH;
lc->bf=EH;
break;
case LH:
T->bf=EH;
lc->bf=RH;
break;
}
rd->bf=EH;
R(T->rchild);
L(T);
}
}
void R(BBSTree &p) //右旋
{
if(p==NULL)return ;
BBSTree lc=p->lchild;
if(lc!=NULL)
{
p->lchild=lc->rchild;
lc->rchild=p;
p=lc;
}
}
void L(BBSTree &p) //左旋
{
BBSTree rc=p->rchild;
p->rchild=rc->lchild;
rc->lchild=p;
p=rc;
}