| CSC301: Tree code: The winner is... [49/56] | ![]() ![]() ![]()  | 
public int size () { return size (root); } private int size (Node x) { if (x == null) return 0; int sz = 1; sz += size (x.left); sz += size (x.right); return sz; }  | 
public int size () { if (root == null) return 0; return size (root); } private int size (Node x) { int sz = 1; if (x.left != null) sz += size (x.left); if (x.right != null) sz += size (x.right); return sz; }  | 
What are the advantages of each approach?
In general, which should you prefer?
          Nullable has one static conditional (if
          statement).  Non-nullable has three!
        
          However, we have exactly the same number of dynamic
          conditionals (executions of the if statement).
        
Nullable has about twice as many dynamic function calls! Count them!