sábado, 19 de enero de 2008

Busca En Un Arbol en lenguaje C

Desarrolle la función "busca" a la que pasándole un puntero a la raíz de un árbol binario de búsqueda y un entero realice la búsqueda del entero en el árbol. La función devuelve 1 si lo encuentra y 0 en caso contrario.

struct NodoArbol {
int dato; //Almacena el dato
struct NodoArbol* izq; //Apunta al subarbol izquierdo (valores menores)
struct NodoArbol* der; //Apunta al subarbol derecho (valores mayores)
};

typedef struct NodoArbol TNodoArbol, *PNodoArbol;

int busca(PNodoArbol raiz, int dat)
{
PNodoArbol actual = raiz;
/* Todavía puede aparecer, ya que quedan nodos por mirar */
while(!(actual==NULL)) {
if(dat == actual->dato) return 1; /* dato encontrado */
else if(dat < actual->dato) actual = actual->izq; /* Seguir */
else if(dat > actual->dato) actual = actual->der;
}
return 0; /* No está en árbol */
}