/* File: albinric.c */
/* Time-stamp: "2001-05-24 16:09:36 calvanes" */
/* Scopo: driver per le funzioni sui vettori */


typedef int TipoInfoAlbero;

struct nodoAlbero {
  TipoInfoAlbero info;
  struct nodoAlbero *destro, *sinistro;
};
typedef struct nodoAlbero NodoAlbero;
typedef NodoAlbero *TipoAlbero;


TipoAlbero RicercaAlbero(TipoAlbero A, TipoInfoAlbero elem)
  /* Effettua la ricerca di elem nell'albero binario di ricerca A.
     Il valore di ritorno e` il sottoalbero di A la cui radice e` pari ad elem,
     se elem e` presente in A, NULL altrimenti.
  */
{
  TipoAlbero posiz;

  if (A == NULL)
    posiz = NULL;
  else if (elem == A->info)                   /* l'elemento e` stato trovato */
    posiz = A;
  else if (elem < A->info)                 /* cerca nel sottoalbero sinistro */
    posiz = RicercaAlbero(A->sinistro, elem);
  else                                       /* cerca nel sottoalbero destro */
    posiz = RicercaAlbero(A->destro, elem);

  return posiz;
}