public class BST<E extends Comparable<E>> extends BinaryTree<E> { 
 // Data field(s)
   private int size = 0;
   // Constructor(s)
   
   // Methods
   
   public int size() {
   return this.size;
   }
   public void clear() {
   root = null;
size = 0; } public void add(E item) { root = add(root, item); size++; } // add(item) private Node<E> add(Node<E> node, E item) { // insert item (preserving BST) at or below node // returns node at/under which item was inserted if (node == null) { // insert item right here return new Node<E>(item); } else if (item.compareTo(node.data) <= 0) { // item is less than or equal to the data in node node.left = add(node.left, item); return node; } else { // item is greater than the data in localRoot node.right = add(node.right, item); return node; } } // add(node, item) public E find(E item) { return find(root, item); } // find(item) private E find(Node<E> node, E item) { if (node == null) { return null; } int compResult = item.compareTo(node.data); if (compResult == 0) return node.data; else if (compResult < 0) return find(node.left, item); else return find(node.right, item); } // find(node, item) } // class BST<E>