Esempio n. 1
0
 public static SimpleRope balance(SimpleRope p)
 {
     p.updateHeight();
     Console.WriteLine(balanceFactor(p));
     if (balanceFactor(p) == 2)
     {
         Console.WriteLine("rRot");
         Console.WriteLine(balanceFactor(p.right));
         if (balanceFactor(p.right) < 0)
         {
             Console.WriteLine("brRot");
             p.right = rightRotation(p.right);
         }
         return(leftRotation(p));
     }
     if (balanceFactor(p) == -2)
     {
         Console.WriteLine("lRot");
         Console.WriteLine(balanceFactor(p.left));
         if (balanceFactor(p.left) > 0)
         {
             Console.WriteLine("blRot");
             p.left = leftRotation(p.left);
         }
         return(rightRotation(p));
     }
     else
     {
         return(p);
     }
 }
Esempio n. 2
0
        private static SimpleRope leftRotation(SimpleRope q)
        {
            SimpleRope qcopy = q;
            SimpleRope y     = qcopy.right;
            SimpleRope T2    = y.left;

            y.left      = q;
            qcopy.right = T2;

            qcopy.updateHeight();
            y.updateHeight();
            return(y);
        }
Esempio n. 3
0
        private static SimpleRope rightRotation(SimpleRope p)
        {
            SimpleRope pcopy = p;
            SimpleRope x     = pcopy.left;
            SimpleRope T2    = x.right;

            x.right    = pcopy;
            pcopy.left = T2;

            pcopy.updateHeight();
            x.updateHeight();
            return(x);
        }