Ho provato a fare quest'esercizio in cui si dovrebbe a trascrivere da file di testo, presente nella cartella del progetto, su un albero binario di ricerca ma quando compila mi da errore e mi da un messaggio con scritto "stack Overflow". Penso che il problema sia nella funzione "empty" ma non riesco proprio a capire come risolvere il problema, sembra proprio che non riesca a scrivere sull'albero binario..

qualcuno mi può aiutare?

codice:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

typedef struct it{
	char nome[30];
	struct it*left;
	struct it*right;
}item;
typedef item*tree;

//typedef  enum {falso, vero} boolean;
typedef int boolean;

boolean empty(item t){
	return (t==NULL);
}

tree left(tree t){
	if(empty(t)==1)
		return NULL;
	else return t->left;
}

tree right(tree t){
	if(empty(t))
		return NULL;
	else return t->right;
}

tree ConsTree(char c[],tree l, tree r){
	tree t=(item*)malloc(sizeof(item));
	strcpy(t->nome,c);
	t->left=l;
	t->right=r;
	return t;
}

tree emptytree(void){
	return NULL;
}

tree InsBinOrd(char c[],tree t){
	if(empty(t))
		return ConsTree(c,emptytree(),emptytree());
	else 
		if(strcmp(c,t->nome)<=0)
			return ConsTree(t->nome,InsBinOrd(c,t->left),t->right);
		else return ConsTree(t->nome,t->left,InsBinOrd(c,t->right));
}

void InOrder(tree t){
	
	if(empty(t)){
		InOrder(left(t));
		printf("%s\n", t->nome);
		InOrder(right(t));
	}
}

		

void main(){
	FILE*write;
	FILE*read;
	int continua=1;
	char parola[11];
	tree t=NULL;
	int i=0;
	char v[11][11];
	int n;	


	/*write=fopen("write.txt","w");
	if(write==NULL){
		printf("errore aperuta file\n");
		exit(1);
	}
	do{
		printf("inserire nome\n");
		gets(parola);
		fprintf(write,"%s\n",parola);
		printf("Vuoi continuare?\n");
		scanf("%d",&continua);
		getchar();
	}while(continua);
	printf("fatto\n");
	fclose(write);*/

	read=fopen("write - Copia.txt","r");
	if(read==NULL){
		printf("errore apertura file\n");
		exit(1);
	}
	while(fscanf(read,"%s\n",parola)>0){
		printf("%s\n",parola);
		InsBinOrd(parola,t);
		strcpy(v[i],parola);
		i++;
	}
	printf("fatto\n");
	fclose(read);
	for(n=0;n<i;n++){
		printf("%s\n", v[n]);
	}
	printf("\n\n");
	InOrder(t);



	fflush(stdin);
	getchar();
}