Node* balanceNode(Node* n) { if (n != NULL) { n->l = balanceNode(n->l); n->r = balanceNode(n->r); if (depth(n->r) > depth(n->l)+1) { n = rotateACW(n); } if (depth(n->l) > depth(n->r)+1) { n = rotateCW(n); } } return n; }
void moveCube(Cube *thisCube, Cube *parentCube, enum Move_e thisMove) { switch (thisMove) { case MOVE_FCW: rotateCW(&parentCube->face[FACE_F], &thisCube->face[FACE_F]); moveEdges(parentCube, thisCube, FACE_F, ROTATE_CW); break; case MOVE_FACW: rotateACW(&parentCube->face[FACE_F], &thisCube->face[FACE_F]); moveEdges(parentCube, thisCube, FACE_F, ROTATE_ACW); break; case MOVE_UCW: rotateCW(&parentCube->face[FACE_U], &thisCube->face[FACE_U]); moveEdges(parentCube, thisCube, FACE_U, ROTATE_CW); break; case MOVE_UACW: rotateACW(&parentCube->face[FACE_U], &thisCube->face[FACE_U]); moveEdges(parentCube, thisCube, FACE_U, ROTATE_ACW); break; case MOVE_RCW: rotateCW(&parentCube->face[FACE_R], &thisCube->face[FACE_R]); moveEdges(parentCube, thisCube, FACE_R, ROTATE_CW); break; case MOVE_RACW: rotateACW(&parentCube->face[FACE_R], &thisCube->face[FACE_R]); moveEdges(parentCube, thisCube, FACE_R, ROTATE_ACW); break; case MOVE_DCW: rotateCW(&parentCube->face[FACE_D], &thisCube->face[FACE_D]); moveEdges(parentCube, thisCube, FACE_D, ROTATE_CW); break; case MOVE_DACW: rotateACW(&parentCube->face[FACE_D], &thisCube->face[FACE_D]); moveEdges(parentCube, thisCube, FACE_D, ROTATE_ACW); break; case MOVE_BCW: rotateCW(&parentCube->face[FACE_B], &thisCube->face[FACE_B]); moveEdges(parentCube, thisCube, FACE_B, ROTATE_CW); break; case MOVE_BACW: rotateACW(&parentCube->face[FACE_B], &thisCube->face[FACE_B]); moveEdges(parentCube, thisCube, FACE_B, ROTATE_ACW); break; case MOVE_LCW: rotateCW(&parentCube->face[FACE_L], &thisCube->face[FACE_L]); moveEdges(parentCube, thisCube, FACE_L, ROTATE_CW); break; case MOVE_LACW: rotateACW(&parentCube->face[FACE_L], &thisCube->face[FACE_L]); moveEdges(parentCube, thisCube, FACE_L, ROTATE_ACW); break; default: //MessageBox(NULL, "Illegal move attempted", "wtf", 0); fatal(0, "Illegal move attempted"); } }