Arbre binaire de recherche(langage C)

matafix Messages postés 45 Statut Membre -  
 manel zairi -
bsr,
qui peut m'aider je veux implementer un arbre binaire de recherche par tableau mais j'arrive pas
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. supermagic
     
    execute ça en c++
    #include<iostream.h>
    struct noeud {
    int info;
    noeud *fg;
    noeud *fd;
    };

    const int max=30;

    noeud *t[max];

    void prefixe_rec(noeud *arbre){
    noeud *nd;
    nd=arbre;
    if(nd!=NULL){
    cout<<nd->info<<" ";
    prefixe_rec(nd->fg);
    prefixe_rec(nd->fd);}
    }

    void infixe_rec(noeud *arbre){
    noeud *nd;
    nd=arbre;
    if(nd!=NULL){
    infixe_rec(nd->fg);
    cout<<nd->info<<" ";
    infixe_rec(nd->fd);}
    }

    void suffixe_rec(noeud *arbre){
    noeud *nd;
    nd=arbre;
    if(nd!=NULL){
    suffixe_rec(nd->fg);
    suffixe_rec(nd->fd);
    cout<<nd->info<<" ";}
    }

    struct pile {
    noeud *sommet;
    pile *suivant;
    };

    pile *creer_pile(pile *p){
    p=NULL;}

    bool pile_vide(pile *p){
    return (p==NULL);}

    void empiler(noeud *nd,pile *p){
    pile *q;
    q=new(pile);
    q->suivant=p;
    q->sommet=nd;
    p=q;}

    noeud *depiler(pile *p){
    pile *q;
    if (!pile_vide(p)){
    return p->sommet;
    q=p;
    p=p->suivant;
    delete(q);}
    else cout<<"pile vide";
    }

    int main(){
    noeud *nd,*racine;

    int n,info;
    cout<<"Arbre representate par tableau"<<endl<<endl;
    cout<<"Si un neoud a un seul fis l'autre est represente par -1"<<endl<<endl;
    cout<<"Donnez le nombre de noeud (elements du tableau) "<<endl;
    cin>>n;

    for (int i=1;i<=n;i++){
    cout<<"donnez la val du noeud "<<i<<" ";
    cin>>info;
    if (info==-1) t[i]=NULL;
    else {
    t[i]=new(noeud);
    t[i]->info=info;
    t[i]->fg=NULL;
    t[i]->fd=NULL;}
    }

    for (int i=1;i<=n/2;i++){
    if (t[2*i]==NULL) t[i]->fg=NULL; else t[i]->fg=t[2*i];
    if (t[2*i+1]==NULL)t[i]->fd=NULL;else t[i]->fd=t[2*i+1];
    }
    racine=t[1];
    prefixe_rec(racine);cout<<endl;
    infixe_rec(racine);cout<<endl;
    suffixe_rec(racine);cout<<endl;

    system("pause");
    }
    6
    1. zahra-foufou
       
      merciiiiiiiiiiiiiiiiii
      0
    2. manel zairi
       
      merci pour l'aide
      0
  2. Emeric84 Messages postés 30 Statut Membre 8
     
    Qu'est-ce que vous appelez implémenter un ABR par tableau ?

    La solution généralement employée est de partir de la racine en premier élément du tableau, et de ranger chaque fils plus loin, à savoir pour une racine i donnée, son fils gauche et droit seront respectivement à l'indice 2i et 2i+1...

    Par exemple :
          4
        /    \
      2       7
     /  \     /  \
    1   3  6   9


    Donne :
    4 2 7 1 3 6 9
    2
  3. tix
     
    voila l'implementation en C !

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    //déclaration du noeud!
    struct Noeud
    {
    char d; //la tu met le type que tu veux !!
    struct Noeud* succ_gauche;
    struct Noeud* succ_droit;
    };
    typedef struct Noeud* TArbre;
    int main()
    {
    TArbre arbre=NULL;
    system("PAUSE");
    return 0;
    }
    0