Arbre binaire de recherche(langage C)

Fermé
matafix Messages postés 45 Date d'inscription samedi 1 décembre 2007 Statut Membre Dernière intervention 23 janvier 2009 - 24 avril 2008 à 00:34
 manel zairi - 29 juin 2011 à 01:26
bsr,
qui peut m'aider je veux implementer un arbre binaire de recherche par tableau mais j'arrive pas
A voir également:

3 réponses

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
zahra-foufou
26 mars 2011 à 20:35
merciiiiiiiiiiiiiiiiii
0
manel zairi
29 juin 2011 à 01:26
merci pour l'aide
0
Emeric84 Messages postés 30 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 24 avril 2008 8
24 avril 2008 à 20:45
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
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