#include <stdio.h>
#include <stdlib.h>
#include "ABR.h"

int scanInt(char* question);
void menu();

int scanInt(char* question)
{
        printf("%s\n", question);
        int n;
        scanf("%d",&n);
        char ch;
        while ((ch = getchar()) != '\n' && ch != EOF); 
        return n;
}

void menu()
{
     printf("0 - insérer un sommet\n");
     printf("1 - supprimer un sommet\n");
     printf("2 - rechercher un élément\n");
     printf("3 - tester si l'arbre est un ABR\n");
     printf("4 - afficher le parcours en profendeur (infixe)\n");
     printf("5 - afficher le parcours en largeur\n");
     printf("6 - quitter\n");
}

int main()
{
    int action;
    ABR* a = NULL;
    a = inserer(3,a);
    a = inserer(16,a);
    a = inserer(27,a);
    a = inserer(5,a);
    a = inserer(11,a);
    a = inserer(2,a);
    a = inserer(19,a);
    do
    {
        printf("Arbre actuel:\n");
        afficher(a);
        printf("\n");
        menu();
        int res;
        do
        {
            res = scanf("%d",&action);
            char ch;
            while ((ch = getchar()) != '\n' && ch != EOF); 
        } while (res!= 1);
        switch (action)
        {
               case 0: a = inserer(scanInt("Saisir une valeur entiere pour l'ajouter: "), a); break;
               case 1: a = supprimer(scanInt("Saisir une valeur entiere pour la supprimer: "), a); break;
               case 2: 
                    if (rechercher(scanInt("Saisir une valeur entiere pour la rechercher: "), a) != NULL)
                       printf("Valeur trouvée dans l'arbre\n"); 
                    else 
                       printf("Valeur non trouvée dans l'arbre\n"); 
                    break;
               case 3: 
                    if (estABR(a))
                       printf("Oui, l'arbre est effectivemnt un ABR\n"); 
                    else 
                       printf("non, l'arbre n'est pas un ABR\n"); 
                    break;
               case 4: 
                    printf("Parcours en profondeur (infixe): "); 
                    parcoursProfRec(a);  
                    printf("\n");   
                    break;
               case 5: 
                    printf("Parcours en largeur: "); 
                    parcoursLargeur(a);  
                    printf("\n");   
                    break;
               }

    } while (action != 6);
    return 0;
}

