Shahid4

rotateUp

Aug 4th, 2012
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
D 0.50 KB | None | 0 0
  1.     void rotateUp( Node* p )    // WIP
  2.     {
  3.         Node* A = p;
  4.         Node* B = A.parent;
  5.         Node* G = B.parent;
  6.         // Which side is A
  7.         Side  S = A.side;
  8.        
  9.         // Fix Grand parent
  10.         if( G !is null )
  11.         {
  12.             G.child[ B.side ] = A;
  13.         } else {
  14.             root = A;
  15.         }
  16.  
  17.         // Fix parent links
  18.         A.parent = B.parent;
  19.         B.parent = A;
  20.  
  21.         // Then children
  22.         B.child[ S] = A.child[!S];
  23.         A.child[!S] = B;
  24.  
  25.         // Fix sides
  26.         A.side = B.side;
  27.         B.side = !S;
  28.         auto two = A.child[!S];
  29.         if( two !is null )
  30.             two.side = S;
  31.     }
Advertisement
Add Comment
Please, Sign In to add comment