begin process at 2010 03 22 10:53:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

arbre binaire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

arbre binaire

samedi 28 mai 2005 à 00:55:09 | arbre binaire

phebus709

je cherche comment faire toutes les operations(recherche ,supression insertion....) dans une arbre binaire!mais dans les deux formes (itterative et recursive)! et merci!de votre reponse(code ou algorithme)!! phebus709@hotmail.com

samedi 28 mai 2005 à 13:36:33 | Re : arbre binaire

thebadskull

je te file tout ça ya p-e des erreur mais je croi pas...
jlé pas compilé...
mais c'est a peu pres ça :


//declarations de types
typedef struct n
{
    int val;
    struct n *fg,*fd;
}Noeud;

typedef Noeud* Arbre;



int degenere(Arbre a)
{
    if(a==NULL) return 1;
    if(a->fg!=NULL && a->fd!=NULL) return 0;
    return(degenere(a->fg) && degenere(a->fd));
}



int max(int a,int b)
{
    if(a>b) return a;
    return b;
}



Arbre creation()
{
    Arbre a=NULL;
    int i,j,k;
    printf("\nEntrer le nombre de valeurs à saisir : ");
    scanf("%d",&i);
    for(j=0;j<i;j++)
    {
        printf("\nvaleur %d : ",j);
        scanf("%d",&k);
        a=ajout(a,k);
    }
return a;
}   

int nb_noeud(Arbre a)
{
    if(a==NULL) return 0;
    return(1+nb_noeud(a->fg)+nb_noeud(a->fd));
}

int hauteur(Arbre a)
{
    if(a==NULL) return 0;
    return (1+max(hauteur(a->fg),hauteur(a->fd)));
}


int nb_feuilles(Arbre a)
{
    if(a==NULL) return 0;
    if(a->fg==NULL && a->fd==NULL) return 1;
    return nb_feuilles(a->fg)+nb_feuilles(a->fd);
}


int be(Arbre a)
{
    return abs(hauteur(a->fg)-hauteur(a->fd))<=1;
}

Arbre creation_abe(int n)
{
    Arbre a=(Arbre) malloc(sizeof(Noeud));
    int x;
    if(n>0)
    {
        printf("Valeur %d : ",n);
        scanf("%d",&x);
        a->val=x;
        a->fg=creation_abe((n-1)/2);
        a->fd=creation_abe((n-1)-(n-1)/2);
        return a;
    }
    return NULL;
}











Arbre suppression(Arbre a,int x)
{
    Arbre tmp;
    if(a!=NULL)
    {
        if(a->val>x) a->fg=suppression(a->fg,x);
        else if(a->val<x) a->fd=suppression(a->fd,x);
        else // il y a égalité
        {
            if(a->fg==NULL) {tmp=a->fd; free(a); a=tmp;}
            else if(a->fd==NULL) {tmp=a->fg; free(a); a=tmp;}
            else
            {
                a->fg=suppmax(a->fg,&x);
                a->val=x;
            }   
        }
    }
        return a;
}


Arbre suppmax(Arbre a,int *pmax)
{
    Arbre tmp;
    if(a->fd==NULL)
    {
        *pmax=a->val;
        tmp=a->fg;
        free(a);
        a=tmp;
    }
    else a->fd=suppmax(a->fd,pmax);
    return a;
}



void affich_paren(Arbre a)
{
    if(a!=NULL)
    {
        printf("%d",a->val);
        if(a->fg!=NULL || a->fd!=NULL) printf("(");
        affich_paren(a->fg);
        if(a->fg!=NULL || a->fd!=NULL) printf(",");
        affich_paren(a->fd);
        if(a->fg!=NULL || a->fd!=NULL) printf(")");
    }
}   

void affich2(Arbre a)
{
    Arbre prec=a;
    if(a!=NULL)
    {
        printf("%d",a->val);
        if(a->fg!=NULL || a->fd!=NULL) printf("(");
        a=a->fg;
        while(prec!=NULL)
        {
            affich2(a);
            a=prec->fd;
            prec=prec->fd;
            if(a!=NULL) printf(",");
        }
        printf(")");
    }   
}   

void affich_tri(Arbre a)
{
    if(a!=NULL)
    {
        affich_tri(a->fg);
        printf("%3d",a->val);
        affich_tri(a->fd);
    }
}

Arbre ajout(Arbre a,int x)
{
    if(a!=NULL)
    {
        if(a->val>x) a->fg=ajout(a->fg,x);
        else a->fd=ajout(a->fd,x);
    }
    else
    {
        a=(Arbre) malloc(sizeof(Noeud));
        a->val=x;
        a->fg=NULL;
        a->fd=NULL;
    }
    return a;
}

jeudi 2 juin 2005 à 15:22:35 | Re : arbre binaire

phebus709

merci thebadskull pr la reponse mais la structure de de chaque element de l'arbre ne doit contient forcement un entier!!la structure est sous cette forme::
typedef struct personne
 {
char nom[40];
personne* fils;
personne* frere;
};

jeudi 2 juin 2005 à 22:37:58 | Re : arbre binaire

thebadskull

je le sais !!!
tu met ce que tu veu !!!
mais c'est pour te donner un exemple ^^



Cette discussion est classée dans : arbre, binaire


Répondre à ce message

Sujets en rapport avec ce message

Arbre Binaire [ par Fury_Vash ] je souhaite savoir si il y a pas de code pour chercher le niveau d'un element dans un arbre j'ai tout essayer mais je ne suis pas parvenu a trouver Arbre Binaire Equilibré [ par messier79 ] BonjourJe voudrais savoir comment implémenter un arbre Binaire de Recherche (ou un Arbre Equilibré) en utilisant la STL.Si possible avec un exemple... expression mathematique sous forme d'arbre binaire [ par Milhouse57 ] Je recherche un code qui transformerait une expression mathematique (donnée par l'utilisateur sous forme de chaine de charactere) en un arbre binaire arbre binaire [ par moltese ] Salut, je cherche à savoir si il est possible de créer un arbre binaire par itération? Et si oui est-il possible d'en avoir le code? Merci arbre binaire de recherche equilibrée [ par mrihab ] salut je suis une etudiante en informatique je veux savoir comment realiser une interface graphique representant cette arbre binaire equilibrée arbre binaire [ par ghounaya ] je cherche une simulation graphique des arbres binaires :recherche,ajout et suppression d'un élément. arbre binaire [ par stephanelin ] Bonsoir,comment créer un tableau qui effectue un tri décroissant (d'entiers), en utilisant la notion d'arbre binaire ?MerciStéphane arbre binaire [ par pfmk ] je voudrai enregistrer un arbre binaire dans un fichier texte ou binaire? j'arrive pas à trouver comment je vais organiser mon fichier pour pouvoir r Arbre binaire profondeur hauteur [ par ecolopolo ] BonjourJe chercher à savoir ce que représente exatement tout ce qui concerne les arbres binaire, par exemple la différence entre la hauteur et la prof arbre binaire itératif [ par fred100582 ] Salut, je travaille en ce moment sur un arbre binaire mais je ne dois utiliser ni la récursivité ni les pointeurs pour les sous-arbres et je ne suis p


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales