#include <stdio.h>
#include <stdlib.h>
#include "arbre.h"
#include "conio.h"

void affMenu()
{ 
  clrscr();
    
  gotoxy(12,10);printf ("   ************** MENU: ARBRE BINAIRE  **************\n");
  gotoxy(12,11);printf ("********************************************************\n");
  gotoxy(12,12);printf ("* 1- Affichage de l'arbre binaire en orde              *\n");  
  gotoxy(12,13);printf ("* 2- Affichage de l'arbre binaire en preorde           *\n");  
  gotoxy(12,14);printf ("* 3- Affichage de l'arbre binaire en postorde          *\n");
  gotoxy(12,15);printf ("* 4- Afficher les feuilles                             *\n");
  gotoxy(12,16);printf ("* 5- Ajouter par methode recursive                     *\n");
  gotoxy(12,17);printf ("* 6- Ajouter par methode iterative                     *\n");
  gotoxy(12,18);printf ("* 7- Rechercher par methode recursive                  *\n");
  gotoxy(12,19);printf ("* 8- Rechercher par methode iterative                  *\n");
  gotoxy(12,20);printf ("* 9- Supprimer                                         *\n");
  gotoxy(12,21);printf ("* 10- Detruire l'arbre                                  *\n");    
  gotoxy(12,22);printf ("*11- Calculer la hauteur d'un ABOH                     *\n");  
  gotoxy(12,23);printf ("*12- Determiner si un arbre est partialement equilibre *\n");
  gotoxy(12,24);printf ("* 0- Quitter                                           *\n");
  gotoxy(12,25);printf ("********************************************************\n");
 
}    



int main()
{
  ptr_arbre racine=NULL;
  ptr_arbre addR=NULL;
  long choix;
  long val;
  int ok;
  
  system ("MODE CON: cols=80 lines=40");
  system ("TITLE ARBRE-ABOH.EXE");
  
  do
  {
    sleep(100);
    affMenu();
    
    choix=getch();

  switch(choix)
  {
      case '1':
          if (racine!=NULL)
          {
              afficherordre (racine);
          }
          else printf("L'Arbre Binaire inexistant/n"); 
          break;
      
      case '2': 
           if (racine!=NULL)
          {
              preordre (racine);
          }
          else printf("L'Arbre Binaire inexistant/n");
          break;
          
      case '3': 
           if (racine!=NULL)
          {
              postordre (racine);
          }
          else printf("L'Arbre Binaire inexistant/n");       
          break;
          
      case '4': 
           if (racine!=NULL)
          {
              affichagefeuille (racine);
          }
          else printf("L'Arbre Binaire inexistant/n"); 
          break;
      
      case '5':
          printf ("Entree votre valeur a inserer/n");
          scanf ("%ld",&val);//verifier que c'est bien un nombre
          //printf("val = %ld",val);
  
          ajout_element (&racine,val);
          
          break;
          
      case '6':
      
          printf ("Entree votre valeur a inserer/n");
          scanf ("%ld",&val);//verifier que c'est bien un nombre
          ajoutElementIteratif (&racine,val);
          
          break;
      
      //recherche recursive
      case '7':
          
          if (racine!=NULL)
          {
              printf ("Entree votre valeur a rechercher/n");
              scanf ("%ld",&val);//verifier que c'est bien un nombre
              recherche_Recursive (racine,val,&addR);
              if ( addR!=NULL)
              {
                printf ("valeur trouver : \"%ld\"",addR->info);
                addR=NULL;//pour eviter de le ressortir si il le trouve pas
              }
              else printf ("ELEMENT INEXISTANT");
          }    
          else printf("L'Arbre Binaire inexistant/n"); 
          break;
      
      case '8': 
          if (racine!=NULL)
          {
              printf ("Entree votre valeur a rechercher/n");
              scanf ("%ld",&val);//verifier que c'est bien un nombre
              recherche_Iterative (racine,val,&addR);
              if ( addR!=NULL)
              {
                printf ("valeur trouver : \"%ld\"",addR->info);
                addR=NULL;//pour eviter de le ressortir si il le trouve pas
              }
              else printf ("ELEMENT INEXISTANT");
          }    
          else printf("L'Arbre Binaire inexistant/n");           
      
          break;
          
      case '9': 
          break;
          
      case 10: 
          break;
          
      case 11: 
          break;
          
      case 0:
          exit(0);
          break;
}  
   

  }while (choix!='0');
  
  system("PAUSE");	
  return 0;
}
