Insertar nodo en árbol binario

typedef struct base{
    int clave;
    struct base*izq;
    struct base*der;      
}*NODO;

/*----------INSERTAR NODO EN ARBOL----------*/
void insertar(NODO raiz, int dato){
    NODO nuevo,p;
    int e=-1;
    
    nuevo = (NODO) malloc(sizeof(struct base));
    nuevo->clave = dato;
    nuevo->izq = NULL;
    nuevo->der = NULL;
    
    if(raiz == NULL){
        raiz = nuevo;
    }
    else
    {
        p = raiz;
        while(e==-1){
            if(p->clave > dato){
                if(p->izq != NULL){
                    p = p->izq;
                }
                else
                {
                    p->izq = nuevo;
                    e=1;
                }          
            }
            else
            {
                if(p->clave < dato){
                    if(p->der != NULL){
                        p = p->der;
                    }
                   else
                   {
                       p->der = nuevo;
                       e=1;
                    }          
                }
                if(p->clave == dato){
                    printf("DATO YA INGRESADO\n");
                    e=1;
                }         
            }
        }
    }
}
/*----------FIN INSERTAR NODO EN ARBOL----------*/

No hay comentarios: