domingo, 20 de enero de 2008

Inserta Recursivamente en un Arbol en Lenguaje C

Desarrolle una función recursiva llamada "inserta", a la que pasándole la dirección de un puntero a la raíz de un árbol binario de búsqueda y un entero realice la inserción del entero en el árbol. En el árbol no se admiten valores repetidos. La función devuelve 1 si lo inserta y 0 si ya está. Para crear un nodo en memoria dinámica emplee la función malloc.


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;




#include "nodoarbol.h"
#include

int inserta (PNodoArbol *Raiz, int Elemento){

if (*Raiz == NULL ){
*Raiz=(PNodoArbol) malloc (sizeof(TNodoArbol));
(*Raiz)->dato = Elemento;
(*Raiz)->izq = NULL;
(*Raiz)->der = NULL;
return 1;
}
if (Elemento < (*Raiz)->dato){
inserta (&(*Raiz)->izq, Elemento);
return 1;
}
if (Elemento > (*Raiz)->dato){
inserta (&(*Raiz)->der, Elemento);
return 1;
}
return 0;
}