CSC301: Tree code: Recursion going left and right [36/56] |

public int size () { return size (root, 0); } private static int size (Node x, int sz) { if (x != null) { sz = sz + 1; sz = size (x.left, sz); sz = size (x.right, sz); } return sz; }

Computation of the size happens as we go *forward*, in a
preorder traversal.

Initial value of `sz`

at each node is the number of
nodes that precede this one in a preorder traversal.

The initial value of `sz`

does not include the node
`x`

.

Final value of `sz`

is the initial value plus the size
of the tree rooted at `x`

:
`size (x, sz)`

returns
*size (*`x`

*) + *`sz`