Advertisement
Guest User

miguel

a guest
Nov 24th, 2014
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. void ArbolAVL<Tipo>::BalanceDeIzquierda(NodoAVL<Tipo>* &raiz)
  2. {
  3. NodoAVL<Tipo> *p;
  4. NodoAVL<Tipo> *w;
  5. p = raiz->ligaizquierda(); //p apunta al subarbol izquierdo de la raiz
  6. switch (p->factorequilibrio())
  7. {
  8. case -1: raiz->factorequilibrio() = 0;
  9. p->factorequilibrio() = 0;
  10. RotarAlaDerecha(raiz);
  11. break;
  12. case 0: cerr << "Error: no se puede balancear desde la izquierda" << endl;
  13. break;
  14. case 1: w = p->ligaderecha();
  15. switch (w->factorequilibrio()) //ajustar el factor de balance
  16. {
  17. case -1: raiz->factorequilibrio() = 1;
  18. p->factorequilibrio() = 0;
  19. break;
  20. case 0: raiz->factorequilibrio() = 0;
  21. p->factorequilibrio() = 0;
  22. break;
  23. case 1: raiz->factorequilibrio() = 0;
  24. p->factorequilibrio() = -1;
  25. }
  26. w->factorequilibrio() = 0;
  27. RotarAlaIzquierda(p);
  28. raiz->ligaizquierda() = p;
  29. RotarAlaDerecha(raiz);
  30. }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement