Rechercher : dans
Par :

Arbre binaire de recherche(langage C)

Dernière réponse le 4 mai 2008 à 21:57:09 matafix, le 24 avr 2008 à 00:34:55 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « arbre binaire de recherche(langage C) » dans :
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Langage C++ - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C++ sont typées, c'est-à-dire que les données contenues dans...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...

1

Emeric84, le 24 avr 2008 à 20:45:08
  • +1

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

Répondre à Emeric84

2

tix, le 4 mai 2008 à 21:15:21

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;
}

Répondre à tix

3

 supermagic, le 4 mai 2008 à 21:57:09
  • +1

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");
}

Répondre à supermagic