Tomo la siguiente estructura:
Código C:
Ver original
typedef struct arbol_binario{ int nodo; //valor del nodo padre struct arbol_binario *ptrIzq; //puntero al nodo izquierdo struct arbol_binario *ptrDrcho; //puntero al nodo derecho } nuevoArbol, *ptrNuevoArbol;
Para añadir un nuevo elemento, lo hago con malloc.
Veamos, una vez que tengo un arbol binario construido, si quiero modificar un elemento, por ejemplo el hijo derecho de *arbol podría hacer:
Código C:
Ver original
ptrNuevoArbol ptrDir = &(arbol->ptrDrcho); (*ptrDir) = *arbol2;
y ya donde estaba arbol ahora esta arbol2.
Veamos, lo que no entiendo muy bien es que dirección de memoria hay en arbol, cuando *arbol es el puntero que devuelve malloc al bloque de memoria. Qué hay en expresiones del tipo (&(arbol->ptrDrcho)), osea, donde las declaro y eso. Y además, si esas expresiones son punteros a los punteros a los bloques de memoria, por qué al modificar los bloques a los que apuntan se modifica el arbol? yo creía que ptrDrcho y ptrIzq apuntaban los propios bloques de memoria, con lo cual para eliminar un nodo tendría que hacer apuntar a estos a otro bloque de memoria, pero si cojo y cambio el puntero a dicho bloque a otro bloque diferente, ya se cambia.
No sé si se me entenderá algo, me temo que poco... jej
Un slaudo!