void main()
{
char op;

op=meniu();
while (op!=5)
{
switch (op)
{
case '1': creare();   break;
case '3': adauga();   break;
case '2': deschide(); break;
case '4': sterge();   break;
default: op=meniu(); break;
}
op=meniu();
}
exit(1);
}
Arb sterge(Arb *arb,int x)
{
	Arb tmp;
	tmp=(Nod*)malloc(sizeof(Nod));
	if ((*arb)==NULL)
	{
		//printf("Nodul nu a fost gasit");
	}
	else
	{
		if ((**arb).val>x)
		{
			(**arb).st=sterge(&((**arb).st),x);
		}
		else
		{
			if ((**arb).val<x)
				{
					(**arb).dr=sterge(&((**arb).dr),x);
				}
			else
			{
				//am gasit elementul.o luam pe cele3 cazuri
				if (((**arb).st!=NULL)&&((**arb).dr!=NULL))
				{
					tmp=minim((**arb).dr);
					(**arb).val=(*tmp).val;
					(**arb).dr=sterge(&((**arb).dr),x);//la o recitire nu am inteles linia asta de cod..s-ar putea sa trebuiasca sa ramana doar ce e dupa egal.
					
				}
				else
				{
					tmp=(*arb);
					if ((**arb).st!=NULL)
						(*arb)=(**arb).st;
					else
						(*arb)=(**arb).dr;
				free(tmp);
				}
				
			}
		}
	}
return (*arb);
}
int main()
{
	Arb arb,gas;
	
	int x,i;	 
	arb=NULL;
	srand(time(NULL));
	for (i=1;i<30;i++)
	{
		x=rand();
		x=x%30;
		inserare(&arb,x);
	}
	//inordine(arb,0);
	//printf("\n\n\n");
	gas=find(arb,x);
	if (gas!=NULL)
		printf("%d",(*gas).val);
	//preordine(arb,0);
	sterge(&arb,5);
	//preordine(arb,0);
	return 0;
}
static void sterge(const char * dir_name)
{
  DIR * d;
  d = opendir(dir_name);

  /* 
  * Verificam daca folderul poate fi deschis.
  */
  if(!d)
  {
    fprintf (stderr, "Nu pot deschide directorul'%s': %s\n",
     dir_name, strerror (errno));
    exit(1);
  }
  while(1){
    struct dirent * child;
    char * d_name;
    char * delete_path;
    /* "Readdir" ia fisierele din d. */
    child = readdir(d);
        /* Iesi daca nu mai sunt fisiere. */
    if(!child)
      break;

    d_name = child->d_name;
    /* Printeaza numele.
     * DELETE: cale, daca fisierul trebuie sters.
     * cale simpla daca fisierul nu trebuie sters
     */
     if(strstr(d_name,".out"))
     {
      char* file = malloc(strlen(dir_name) + strlen(d_name) + 2);
      printf("DELETE: %s/%s\n", dir_name, d_name);
      strcpy(file,dir_name);
      strcat(file,"/");
      strcat(file,d_name);
      remove(file);
      free(file);
    }
    else
      printf("%s/%s\n", dir_name, d_name);

    /* Vezi daca e subdirector pentru "d". */
    if(child->d_type & DT_DIR)
    { 
    /* Vezi daca nu e d sau parintele lui d. */

      if(strcmp(d_name, "..") != 0 && strcmp(d_name, ".") != 0)
      {
        int path_length;
        char path[PATH_MAX];
    /* Concatenam in path fisierul la care s-a ajuns. */
        snprintf(path, PATH_MAX, "%s/%s", dir_name, d_name); 
    /* Chemam recursiv "sterge" pentru noua cale. */
        sterge(path);
      }
    }
  }
/* Verificam daca folder-ul se poate inchide. */
  if(closedir(d)){
    fprintf (stderr, "Nu pot inchide '%s': %s\n",
     dir_name, strerror (errno));
    exit(1);
  }
  
}
int main(int argc, char const *argv[])
{
  char file[100];
  sterge(argv[1]);
  return 0;
}