Multiple Choice Answer: 1: b, 2: b, 3: c, 4: c, 5: a, 6: b Short Answer: 1: Swaps the values stored at first and second. 2: 50 / 40 / \ 35 45 / \ 41 47 / 46 3: a: no rotation - same tree with 2 left child of 5 b: right,left rotation around 12 c: right rotation around 25 or 28 4: (two ways to do this - one has linked-lists, or lists witin indices of the array, one just orders within the array). Shown here is with linked-list: Stage 1 Stage 2 Stage 3 Stage 4 0 1470 1072 382,491 1 2381,491,1531 1072,1233,1470,1531 2 1072,382 1233 2381,2478,2484 3 1233 1531,1233 2381,382 3588 4 2484 1470,2478,2484,491 5 1531,3588 6 7 1470,1072,2478 8 3588,2478 2381,382,2484,3588 9 491 Or in the array: Stage 1 Stage 2 Stage 3 Stage 4 0 1470 1531 1072 382 1 2381 1233 1233 491 2 491 1470 2381 1072 3 1531 1072 382 1233 4 1072 2478 1470 1470 5 382 2381 2478 1531 6 1233 382 2484 2381 7 2484 2484 491 2478 8 3588 3588 1531 2484 9 2478 491 3588 3588 5: void ReverseTree(node_t* root) { node_t* temp; if (root == null) return; temp = root->right; root->right = root->left; root->left = temp; ReverseTree(root->left); ReverseTree(root->right); } Long Answer: 1a: 7 1b: int MyAckerman(int m, int n) { if (m==0) { return n+1; } else if (m!=0 && n==0) { return MyAckerman(m-1,1); } else { return MyAckerman(m-1,MyAckerman(m,n-1)); } } 2a: Array shown as comma delimited values s1: 12,28,7,31,2,45,40,30,50,1 s2: 12,28,7,50,2,45,40,30,31,1 s3: 12,28,45,50,2,7,40,30,31,1 s4: 12,50,45,31,2,7,40,30,28,1 s5: 50,31,45,30,2,7,40,12,28,1 2b: Heap: 50 / \ 31 45 / \ / \ 30 2 7 40 / \ / 12 28 1