#include <stdio.h>
#include <stdlib.h>
struct node {
int centro;
struct node * izquierda;
struct node * derecha;
};
//1 = NULL, luego !=NULL ALLOCATED
struct node * crear(struct node *nudo, int n_valor){//crear y darle valor NUDO
nudo = (struct node*)malloc(sizeof(struct node));
(*nudo).izquierda = NULL;
(*nudo).derecha = NULL;
(*nudo).centro = n_valor;
return nudo;
}
void middle(struct node * nudo, int valor){//organizar arbol
if((*nudo).centro > valor){
if((*nudo).izquierda != NULL)
middle((*nudo).izquierda, valor);
(*nudo).izquierda = crear((*nudo).izquierda, valor);
}
else if((*nudo).centro < valor){
if((*nudo).derecha != NULL)
middle((*nudo).derecha,valor);
(*nudo).derecha = crear((*nudo).derecha, valor);
}
return;
}
void liberar(struct node * nudo){//liberar memoria
if((*nudo).izquierda!= NULL)
liberar((*nudo).izquierda);
if((*nudo).derecha != NULL)
liberar((*nudo).derecha);
free(nudo);
}
int main(){
struct node * valor;
int *num, c = 0, max= 0, i =0;
printf("max: ");
scanf("%d", &max);
num = (int *)malloc(max*sizeof(int));
while(i < max){//guardar valores
printf("num: ");
scanf("%d", &c);
num[i] = c;
i++;
}
valor = (struct node *)malloc(sizeof(struct node));
(*valor).centro = num[0];//memoria 1node //main node
for(i =0;i<max;i++)//arbol
middle(valor, num[i]);
liberar(valor);
free(num);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlIHsKICAgIGludCBjZW50cm87CiAgICBzdHJ1Y3Qgbm9kZSAqIGl6cXVpZXJkYTsKICAgIHN0cnVjdCBub2RlICogZGVyZWNoYTsKfTsKLy8xID0gTlVMTCwgbHVlZ28gIT1OVUxMIEFMTE9DQVRFRApzdHJ1Y3Qgbm9kZSAqIGNyZWFyKHN0cnVjdCBub2RlICpudWRvLCBpbnQgbl92YWxvcil7Ly9jcmVhciB5IGRhcmxlIHZhbG9yIE5VRE8KICAgIG51ZG8gPSAoc3RydWN0IG5vZGUqKW1hbGxvYyhzaXplb2Yoc3RydWN0IG5vZGUpKTsKICAgICgqbnVkbykuaXpxdWllcmRhID0gTlVMTDsKICAgICgqbnVkbykuZGVyZWNoYSA9IE5VTEw7CiAgICAoKm51ZG8pLmNlbnRybyA9IG5fdmFsb3I7CiAgICByZXR1cm4gbnVkbzsKfQoKdm9pZCBtaWRkbGUoc3RydWN0IG5vZGUgKiBudWRvLCBpbnQgdmFsb3Ipey8vb3JnYW5pemFyIGFyYm9sCiAgICBpZigoKm51ZG8pLmNlbnRybyA+IHZhbG9yKXsKICAgICAgICBpZigoKm51ZG8pLml6cXVpZXJkYSAhPSBOVUxMKQogICAgICAgICAgICBtaWRkbGUoKCpudWRvKS5penF1aWVyZGEsIHZhbG9yKTsKICAgICAgICAoKm51ZG8pLml6cXVpZXJkYSA9IGNyZWFyKCgqbnVkbykuaXpxdWllcmRhLCB2YWxvcik7CiAgICB9CiAgICBlbHNlIGlmKCgqbnVkbykuY2VudHJvIDwgdmFsb3IpewogICAgICAgIGlmKCgqbnVkbykuZGVyZWNoYSAhPSBOVUxMKQogICAgICAgICAgICBtaWRkbGUoKCpudWRvKS5kZXJlY2hhLHZhbG9yKTsKICAgICAgICAoKm51ZG8pLmRlcmVjaGEgPSBjcmVhcigoKm51ZG8pLmRlcmVjaGEsIHZhbG9yKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnZvaWQgbGliZXJhcihzdHJ1Y3Qgbm9kZSAqIG51ZG8pey8vbGliZXJhciBtZW1vcmlhCiAgICBpZigoKm51ZG8pLml6cXVpZXJkYSE9IE5VTEwpCiAgICAgICAgbGliZXJhcigoKm51ZG8pLml6cXVpZXJkYSk7CiAgICBpZigoKm51ZG8pLmRlcmVjaGEgIT0gTlVMTCkKICAgICAgICBsaWJlcmFyKCgqbnVkbykuZGVyZWNoYSk7CiAgICBmcmVlKG51ZG8pOwp9CgppbnQgbWFpbigpewogICAgc3RydWN0IG5vZGUgKiB2YWxvcjsKICAgIGludCAqbnVtLCBjID0gMCwgbWF4PSAwLCBpID0wOwogICAgcHJpbnRmKCJtYXg6ICIpOwogICAgc2NhbmYoIiVkIiwgJm1heCk7CgogICAgbnVtID0gKGludCAqKW1hbGxvYyhtYXgqc2l6ZW9mKGludCkpOwogICAgd2hpbGUoaSA8IG1heCl7Ly9ndWFyZGFyIHZhbG9yZXMKICAgICAgICBwcmludGYoIm51bTogIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJmMpOwogICAgICAgIG51bVtpXSA9IGM7CiAgICAgICAgaSsrOwogICAgfQogICAgdmFsb3IgPSAoc3RydWN0IG5vZGUgKiltYWxsb2Moc2l6ZW9mKHN0cnVjdCBub2RlKSk7CiAgICAoKnZhbG9yKS5jZW50cm8gPSBudW1bMF07Ly9tZW1vcmlhIDFub2RlIC8vbWFpbiBub2RlCiAgICAKICAgIGZvcihpID0wO2k8bWF4O2krKykvL2FyYm9sCiAgICAgICAgbWlkZGxlKHZhbG9yLCBudW1baV0pOwoKICAgIGxpYmVyYXIodmFsb3IpOwogICAgZnJlZShudW0pOwogICAgCiAgICByZXR1cm4gMDsKfQogICAg