arquivo fonte arvores genericas
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct nodo { char dado; struct nodo *filho, *irmao;
} arvoreg ; arvoreg *aini;
FILE *arq, *arqsai; // arvoreg *ProcuraG(arvoreg **eainicio, char chave) { arvoreg *a1; a1 = NULL; if (*eainicio != NULL) { if ((*eainicio)>dado == chave) a1 = *eainicio; if (a1 == NULL) a1 = ProcuraG ((&((*eainicio)>filho)), chave); if (a1 == NULL) a1 = ProcuraG ((&((*eainicio)>irmao)), chave); } return a1;
}
// arvoreg *ProcuraComAntG(arvoreg **eainicio, char chave, arvoreg **ant) { arvoreg *a1; a1 = NULL; if (*eainicio != NULL) { if ((*eainicio)>dado == chave) a1 = *eainicio; if (a1 == NULL) { *ant = *eainicio; a1 = ProcuraComAntG ((&((*eainicio)>filho)), chave, ant); } if (a1 == NULL){
*ant = *eainicio; a1 = ProcuraComAntG ((&((*eainicio)>irmao)), chave, ant); } } if (a1 == NULL) *ant = NULL; return a1;
}
// void ConstroiG(arvoreg **eainicio) { char c; arvoreg *a1, *a2; int n, i; *eainicio = NULL; while ((c = getc (arq)) != EOF) { if (c != '\n'){ if (*eainicio != NULL) a1 = ProcuraG (eainicio, c); else { a1 = malloc (sizeof (arvoreg)); a1>dado = c; a1>filho = NULL; a1>irmao = NULL; *eainicio = a1; } fscanf (arq, "%d ", &n); for (i=1; i !=n+1; i++) { c = getc (arq); if (a1>filho == NULL) { a1>filho = malloc (sizeof (arvoreg)); a2 = a1>filho; } else { a2>irmao = malloc (sizeof (arvoreg)); a2 = a2>irmao; } a2>dado = c; a2>filho = NULL; a2>irmao = NULL; c = getc (arq); }
} }