Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Dessiner une arbre binaire( mode console):

3/5 (6 avis)

Vue 5 245 fois - Téléchargée 435 fois

Description

Bonjour;
car il est défficile d'imaginer la représentation d'une arbre binaire,
je vous présente un code en c qui dessin une arbre binaire de recherche sur le console.

Voir le Snapshot (capture) pour etre convaincus de télecharger le code :)

le modelle d'arbre binaire(rechercher , supression, ...) est inclu dans le code aussi.

Source / Exemple :


le reste du code est dans le zip: 
voila la fonction DrawTree_Horizonral

void DrawTree_Horizonral(TArbre arbre,char type, int x, int y,int level)
{

    if(arbre!=NULL)
    {
        int a=level-1;
        switch (type)
        {
            case 'r'://racine
            /*on calcule les coordonées du racine slon le profonder de l'arbre ...*/
            x=1;
            y=pow(2,Hauteur(arbre)-1);
            gotoxy(x,y);
            printf("[%d]",arbre->valeur);
            printf("%c%c",196,180);
            DrawTree_Horizonral(arbre->droit,'d',x+nb_pos(arbre->valeur)+3,y-1,Hauteur(arbre));
            DrawTree_Horizonral(arbre->gauche,'g',x+nb_pos(arbre->valeur)+3,y+1,Hauteur(arbre));
            break;

            case 'd'://droit

            while(a>=0)
            {
                a--;
                gotoxy(x,y);
                y--;
                printf("%c",179);
            }
            gotoxy(x,y);
            printf("%c",218);
            textcolor(10);
            printf("(%d)",arbre->valeur);
            textcolor(15);
            printf("%c%c",196,180);
            DrawTree_Horizonral(arbre->droit,'d',x+nb_pos(arbre->valeur)+2+2,y-1,Hauteur(arbre)-1);
            DrawTree_Horizonral(arbre->gauche,'g',x+nb_pos(arbre->valeur)+2+2,y+1,Hauteur(arbre)-1);

            break;

            case 'g'://gauche
            textcolor(15);
            while(a>=0)
            {
                a--;
                gotoxy(x,y);
                y++;
                printf("%c",179);
            }
            gotoxy(x,y);
            printf("%c",192);
            textcolor(12);
            printf("(%d)",arbre->valeur);
            textcolor(15);
            printf("%c%c",196,180);
            DrawTree_Horizonral(arbre->droit,'d',x+nb_pos(arbre->valeur)+2+2,y-1,Hauteur(arbre)-1);
            DrawTree_Horizonral(arbre->gauche,'g',x+nb_pos(arbre->valeur)+2+2,y+1,Hauteur(arbre)-1);
            break;
        }

    }else
     {

        gotoxy(x,y);
        if(type=='d')
        printf("%c%c",218,196);
        else
        printf("%c%c",192,196);;
        textcolor(14);
        printf("%c",16);
        textcolor(7);
        //printf("%c%c",196,180);
     }

}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.