Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void ArbolAVL<Tipo>::BalanceDeIzquierda(NodoAVL<Tipo>* &raiz)
- {
- NodoAVL<Tipo> *p;
- NodoAVL<Tipo> *w;
- p = raiz->ligaizquierda(); //p apunta al subarbol izquierdo de la raiz
- switch (p->factorequilibrio())
- {
- case -1: raiz->factorequilibrio() = 0;
- p->factorequilibrio() = 0;
- RotarAlaDerecha(raiz);
- break;
- case 0: cerr << "Error: no se puede balancear desde la izquierda" << endl;
- break;
- case 1: w = p->ligaderecha();
- switch (w->factorequilibrio()) //ajustar el factor de balance
- {
- case -1: raiz->factorequilibrio() = 1;
- p->factorequilibrio() = 0;
- break;
- case 0: raiz->factorequilibrio() = 0;
- p->factorequilibrio() = 0;
- break;
- case 1: raiz->factorequilibrio() = 0;
- p->factorequilibrio() = -1;
- }
- w->factorequilibrio() = 0;
- RotarAlaIzquierda(p);
- raiz->ligaizquierda() = p;
- RotarAlaDerecha(raiz);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement