te iba a consultar, antes de ver el video, se me ocurrio que se podria generar una estructura que apunte al nodo anterior... struct nodo{ int info; struct nodo *ant, *izq, *der; }; se podria generar algo asi o no?
Al algoritmo de push lo hice de esta forma utilizando el operador ternario: void push(struct Tree *new, int elem_to_insert) { struct Tree *new_tree = malloc(sizeof(*new_tree)); new->info = elem_to_insert; if (new->root == NULL) { new->root = new_tree; } else { struct Tree *previous = NULL, *dummy = new->root; while (dummy != NULL) { previous = dummy; (elem_to_insert < dummy->info) ? (dummy = dummy->left) : (dummy = dummy->right); } (elem_to_insert < previous->info) ? (previous->left = new_tree) : (previous->right = new_tree); } ++new->tree_size; } Se me ocurrio sobre la marcha. Mi pregunta es: Puedo usar de esa forma al operador ternario (sin ningun tipo de variable)?
Me gusta como explicas bro, ojala que sigas subiendo este contenido, gracias por la ayuda c:
Saludos.
Bien explicado y claro, un éxito.
Gracias Federico.
muchas gracias
Hola a mi tambien me sirvio sigue asi
Excelente video Diego mil gracias por tu vídeo, de pronto puedes hacer esto en Angular ? Con backend Java?
Saludos Vianey.
Por el momento en Angular tengo en modo texto el curso:
www.tutorialesprogramacionya.com/angularya/
te iba a consultar, antes de ver el video, se me ocurrio que se podria generar una estructura que apunte al nodo anterior...
struct nodo{
int info;
struct nodo *ant, *izq, *der;
};
se podria generar algo asi o no?
Se podría tener la dirección del nodo padre.
no usas recursividad en los arboles?
Para insertar es más conveniente utilizar una estructura repetitiva en lugar de la recursividad.
Pero los recorridos si son recursivos.
@@diegomoissetdeespanes OK! Gracias por la respuesta!
Al algoritmo de push lo hice de esta forma utilizando el operador ternario:
void push(struct Tree *new, int elem_to_insert) {
struct Tree *new_tree = malloc(sizeof(*new_tree));
new->info = elem_to_insert;
if (new->root == NULL) {
new->root = new_tree;
} else {
struct Tree *previous = NULL, *dummy = new->root;
while (dummy != NULL) {
previous = dummy;
(elem_to_insert < dummy->info) ? (dummy = dummy->left) : (dummy = dummy->right);
}
(elem_to_insert < previous->info) ? (previous->left = new_tree) : (previous->right = new_tree);
}
++new->tree_size;
}
Se me ocurrio sobre la marcha. Mi pregunta es: Puedo usar de esa forma al operador ternario (sin ningun tipo de variable)?
Si, no hay ningún problema para tener un código más conciso:
void insertar(int x)
{
struct nodo *nuevo;
nuevo = malloc(sizeof(struct nodo));
nuevo->info = x;
nuevo->izq = NULL;
nuevo->der = NULL;
if (raiz == NULL)
raiz = nuevo;
else
{
struct nodo *anterior, *reco;
anterior = NULL;
reco = raiz;
while (reco != NULL)
{
anterior = reco;
(xinfo)?(reco = reco->izq):(reco = reco->der);
}
(x < anterior->info)?(anterior->izq = nuevo):(anterior->der = nuevo);
}
}