Each group of people grading a problem came up with the grading guide for the problem.
This is just an attempt to capture what were the rules of thumb.
1. 4 points for the base case
-2pt for not starting at k=0
4 points for the correct induction hypothesis
-2pt for not doing strong induction or assuming 2 adjacent k's
-1pt if I.H. says assume fot k>=2 then prove for k+1
6 points for a correct inductive step
-1pt for not saying why you can make assumptions about the height of the second subtree
-3pt for saying saying that both subtrees have height k
-1pt for not labeling where the I.H. is used in the proof
2 points for the conclusion
2. Every correct output is worth two points
3.a) 4 points for using instanceof
2 points for making the counters static
2 points for making it work
b) 2 points for changing the left and right subtrees to private
1 point for saying that the should use getters and setters
4 points for saying that they should checking that both left and right are (non) null in the constructor.
1 point for saying that they should use one setter that takes two arguments
4. Every question is worth one point
5. 4 points if B is the root of the tree. 6 points for every correct subtree (?)
6. 3 points for checking if c1==null && c2==null
5 points for checking if either c1==null or c2==null
5 points for checking which datum is greater
7 points for calling lex recursively
Non recursive solutions got 5 points max