These recursive methods generaly need to have a Node as a parameter!
Consequently, these methods can't be public.
So the pattern that arises is to have one public method that doesn't require a Node parameter and to have a private recursive method that is called to do all the work.
For example, here is a pair of get methods, one public and one private:
public Value get(Key k)
{
// Call the private recursive find
// starting at the root of the tree.
return get( k, root);
}
private Value get(Key k, Node t)
{
if ( t == null ) { // Base case
return null;
}
if ( k.compareTo(t.key) < 0 ) { // reduce search to left subtree
return get(k, t.left);
}
else if ( k.compareTo(t.key) > 0 ) { // or to the right subtree
return get(k, t.right);
}
else {
return t.val; // or Node with the key is found; return its value!
}
}