Ciao a tutti, ho bisogno una mano per scrivere una funzione in C che mi sta dando non pochi grattacapi.
Io ho due tipi di dati cosģ definiti:
codice:
typedef struct nodo * punt;
typedef struct nodo{
	char carattere;
	int array[N];
	punt left;
	punt right;
}nodo;
Ho bisogno di una funzione che riceve in ingresso un puntatore punt al primo nodo dell'albero e riempa gli array in questo modo:
Consideriamo il nodo in testa. Questo nodo deve avere l'array vuoto. I puntatori left e right di questo nodo punteranno ad altri due nodi (o magari uno od entrambi i puntatori posso puntare a null, le caratteristiche dell'albero le descrivo alla fine di questo post).
Nell'array del nodo puntato da right bisognerą inserire tutto il contenuto dell'array del nodo precedente (che essendo il primo era vuoto) e aggiungere nel primo spazio vuoto dell'array uno 0 mentre nell'array del nodo raggiunto da left bisognerą sempre copiare il contenuto dell'array del nodo precedente e poi inserie nel primo spazio vuoto di questo array un 1. Si supponga che la dimensione dell'array sia sufficiente a contenere tutti gli elementi necessari per arrivare ai nodi foglia. Infine la funzione, arrivata ai nodi foglia, deve stampare il carattere seguito da tutti gli elementi dell'array... Altra nota: l'albero non č nč simmetrico, nč binario, nč altro... non ha una struttura particolare, deve andare bene per qualsiasi tipo di albero. Ci sto impazzendo da un paio di giorni, riuscite a darmi una mano?
Grazie