A binary search tree is a binary tree with the following property.
| If a given node v has item k, then all nodes in the left subtree of v have items that are less than k, and all nodes in the right subtree of v have items that are greater than k. | 
      
    For example, the following is a binary search tree.
      
    A binary search tree can have any shape, as long as it obeys the ordering requirement. The following is a binary search tree. (The left subtree of each node is an empty tree.)
      
    Our intent is to use a binary search tree as an implementation of a set of integers, namely, the set of integers that occur in the tree. An empty tree represents an empty set.
Functions can take advantage of the ordering requirement in a way that is similar to what binary search does. A membership testing function can exploit the following facts.
An empty tree has no members.
If the root of T contains x, then tree T clearly contains x.
If the root of T contains k and x < k then, if x occurs in T at all, it must occur in T 's left subtree, by the ordering requirement for binary search trees.
Similarly, if the root of T contains k and x > k, then x occurs in T if and only if x occurs in T 's right subtree.
  //==========================================
  //               member
  //==========================================
  // member(x,T) returns true if x is in binary
  // search tree T.
  //==========================================
  bool member(const int x, const Tree T)
  {
    if(T == NULL)
    {
      return false;
    }
    else if(x == T->item)
    {
      return true;
    }
    else if(x < T->item)
    {
      return member(x, T->left);
    }
    else
    {
      return member(x, T->right);
    }
  }
    Notice the similarity between that and binary search.