Création
d'entreprise
Posez votre question Signaler

Arbre binaire de recherche(langage C)

matafix 47Messages postés 1 décembre 2007Date d'inscription - Dernière réponse le 29 juin 2011 à 01:26
bsr,
qui peut m'aider je veux implementer un arbre binaire de recherche par tableau mais j'arrive pas
Lire la suite 

Arbre binaire de recherche(langage C) »

5 réponses
Réponse
+5
moins plus
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");
}
zahra-foufou - 26 mars 2011 à 20:35
merciiiiiiiiiiiiiiiiii
manel zairi - 29 juin 2011 à 01:26
merci pour l'aide
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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;
}
Ajouter un commentaire
Ce document intitulé « arbre binaire de recherche(langage C) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?