void BST::Insert(TreeData El, int& Success)
{
  TreeData Current;

  if (IsEmpty())
    InsertAtRoot(El, Success);
  else
  {
    Search(El, Success);
    if (Success)             // no duplications
      Success = False;
    else
    {
      Retrieve(Current, Success);
      if (El < Current)
        InsertLeft(El, Success);
      else
        InsertRight(El, Success);
    }
}

void BST::Search(TreeData El, int& Success)
{
  InitCursor(GetRoot());
  DoSearch(El, Success);
}

void BST::DoSearch(TreeData El, int& Success)
{
  TreeData Current;
  Retrieve (Current, Success);

  if (!Success)
    Success = False;
  else if (Current == El)
    Success = True;
  else if (Current < El)
  {
    if (!HasRightTree())
      Success = False;
    else
    {
      GoRight();
      DoSearch(El, Success);
    }
  }
}


Return to CIS 350 Index Page