A binary tree can be encoded using two functions `l` and `r`
such that for a `node n`, `l(n)` give the left child of `n`, `r(n)`
give the right child of `n`.

A branch of a tree is a path from the root to a leaf, the
length of a branch to a particular leaf is the number of
arcs on the path from the root to that leaf.

Let `MinBranch(l,r,x)` be a simple recursive algorithm for
taking a binary tree encoded by the l and r functions
together with the root node x for the binary tree and
returns the length of the shortest branch of the binary
tree.

Give the pseudocode for this algorithm.

OK, so basically this is what I've come up with so far:

```
MinBranch(l, r, x)
{
    if x is None return 0

    left_one = MinBranch(l, r, l(x))

    right_one = MinBranch(l, r, r(x))

    return {min (left_one),(right_one)}
}

```

Obviously this isn't great or perfect. I'd be greatful if
people can help me get this perfect and working - any help
will be appreciated.