A voir également:
- B-arbre - recherche d'un cours
- Recherche automatique des chaînes ne fonctionne pas - Guide
- La ressource demandée est en cours d'utilisation ✓ - Forum Caméra
- B&you - Guide
- Recherche image - Guide
- Rechercher ou entrer l'adresse 4 - recherche google ✓ - Forum Réseaux sociaux
9 réponses
j'ai des difficultés moi aussi dans la determination de l'ordre et du niveau d'un b-arbre.
mais je possede neanmois des cours que je pourais t'envoyer si j'ai ton email M. Berns
mais je possede neanmois des cours que je pourais t'envoyer si j'ai ton email M. Berns
c'est un code pour creer et manipuler les arbre binaire dans c
/*Structure de données: Arbre binaire de recherche*/
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
/* Définition de la structure Noeud d'un arbre*/
struct Noeud{
int d;
struct Noeud* succ_gauche;
struct Noeud* succ_droit;
};
/*Définition du type TArbre, en effet une structure de type TArbre est définie
par un pointeur sur la racine de l'arbre*/
typedef struct Noeud* TArbre;
/* Fonction ajouterNoeud: crée un Noeud et l'ajoute dans
un arbre binaire de recherche.*/
void ajouterNoeud(TArbre* arbre, int val)
{ struct Noeud* nouveauNoeud;
TArbre pArbre; /* Variable utilisée pour parcourir l'arbre*/
/* Création du nouveau noeud dont la valeur de d est égale à val*/
nouveauNoeud=(struct Noeud*)malloc(sizeof(struct Noeud));
nouveauNoeud->d=val;
nouveauNoeud->succ_gauche=NULL;
nouveauNoeud->succ_droit=NULL;
/* Ajout du nouveau noeud dans l'arbre*/
pArbre=*arbre;
if (*arbre==NULL)
*arbre=nouveauNoeud; /* si c'est un nouvel arbre alors le nouveau noeud sera
la racine de cet arbre*/
else
while(TRUE)/* On crée une boucle infinie, la sortie de la sortie sera réalisée
par l'appel de l'instruction break; */
{ if (val< pArbre->d) /* Alors le nouveau doit être ajouté à gauche*/
{ if (pArbre->succ_gauche==NULL){
/* Donc le nouveau noeud doit être ajouté dans cet emplacement et on doit
quitter la boucle while*/
pArbre->succ_gauche=nouveauNoeud;
break;
}
else
pArbre=pArbre->succ_gauche;
}
else
{ /* donc val est supérieure à (*pArbre)->d, donc on ajoute le
nouveau noeud à droite */
if (pArbre->succ_droit==NULL){
/* Donc le nouveau noeud doit être ajouté dans cet emplacement et on doit
quitter la boucle while*/
pArbre->succ_droit=nouveauNoeud;
break;
}
else
pArbre=pArbre->succ_droit;
}
}
}
/*
*/
void afficherArbreRec(TArbre a )
{
if (a==NULL) return;
afficherArbreRec (a->succ_gauche );
printf ("%d", a->d);
afficherArbreRec (a->succ_droit);
}
void indenter (int i)
{
printf ("\n");
for ( ; i > 0; i--) printf ("-");
}
/* Affichage avec indentation*/
void afficher2ArbreRec(TArbre a, int indentation )
{
if (a==NULL) return;
afficher2ArbreRec (a->succ_gauche ,indentation + 1);
indenter (indentation );
printf ("%d", a->d );
afficher2ArbreRec (a->succ_droit,indentation + 1);
}
/**/
void afficher3ArbreRec(TArbre a )
{
if (a==NULL) return;
afficherArbreRec (a->succ_gauche );
afficherArbreRec (a->succ_droit);
printf ("%d", a->d);
}
void libererMemoire(TArbre a )
{
if (a==NULL) return;
libererMemoire (a->succ_gauche );
libererMemoire (a->succ_droit);
free(a);
}
int main(void){
TArbre arbre=NULL;
int i,d;
for(i=0; i<=6;i++){
scanf("%d",&d);
ajouterNoeud(&arbre,d);}
afficher3ArbreRec(arbre);
libererMemoire(arbre);
return 0;
}
/*Structure de données: Arbre binaire de recherche*/
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
/* Définition de la structure Noeud d'un arbre*/
struct Noeud{
int d;
struct Noeud* succ_gauche;
struct Noeud* succ_droit;
};
/*Définition du type TArbre, en effet une structure de type TArbre est définie
par un pointeur sur la racine de l'arbre*/
typedef struct Noeud* TArbre;
/* Fonction ajouterNoeud: crée un Noeud et l'ajoute dans
un arbre binaire de recherche.*/
void ajouterNoeud(TArbre* arbre, int val)
{ struct Noeud* nouveauNoeud;
TArbre pArbre; /* Variable utilisée pour parcourir l'arbre*/
/* Création du nouveau noeud dont la valeur de d est égale à val*/
nouveauNoeud=(struct Noeud*)malloc(sizeof(struct Noeud));
nouveauNoeud->d=val;
nouveauNoeud->succ_gauche=NULL;
nouveauNoeud->succ_droit=NULL;
/* Ajout du nouveau noeud dans l'arbre*/
pArbre=*arbre;
if (*arbre==NULL)
*arbre=nouveauNoeud; /* si c'est un nouvel arbre alors le nouveau noeud sera
la racine de cet arbre*/
else
while(TRUE)/* On crée une boucle infinie, la sortie de la sortie sera réalisée
par l'appel de l'instruction break; */
{ if (val< pArbre->d) /* Alors le nouveau doit être ajouté à gauche*/
{ if (pArbre->succ_gauche==NULL){
/* Donc le nouveau noeud doit être ajouté dans cet emplacement et on doit
quitter la boucle while*/
pArbre->succ_gauche=nouveauNoeud;
break;
}
else
pArbre=pArbre->succ_gauche;
}
else
{ /* donc val est supérieure à (*pArbre)->d, donc on ajoute le
nouveau noeud à droite */
if (pArbre->succ_droit==NULL){
/* Donc le nouveau noeud doit être ajouté dans cet emplacement et on doit
quitter la boucle while*/
pArbre->succ_droit=nouveauNoeud;
break;
}
else
pArbre=pArbre->succ_droit;
}
}
}
/*
*/
void afficherArbreRec(TArbre a )
{
if (a==NULL) return;
afficherArbreRec (a->succ_gauche );
printf ("%d", a->d);
afficherArbreRec (a->succ_droit);
}
void indenter (int i)
{
printf ("\n");
for ( ; i > 0; i--) printf ("-");
}
/* Affichage avec indentation*/
void afficher2ArbreRec(TArbre a, int indentation )
{
if (a==NULL) return;
afficher2ArbreRec (a->succ_gauche ,indentation + 1);
indenter (indentation );
printf ("%d", a->d );
afficher2ArbreRec (a->succ_droit,indentation + 1);
}
/**/
void afficher3ArbreRec(TArbre a )
{
if (a==NULL) return;
afficherArbreRec (a->succ_gauche );
afficherArbreRec (a->succ_droit);
printf ("%d", a->d);
}
void libererMemoire(TArbre a )
{
if (a==NULL) return;
libererMemoire (a->succ_gauche );
libererMemoire (a->succ_droit);
free(a);
}
int main(void){
TArbre arbre=NULL;
int i,d;
for(i=0; i<=6;i++){
scanf("%d",&d);
ajouterNoeud(&arbre,d);}
afficher3ArbreRec(arbre);
libererMemoire(arbre);
return 0;
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
elsalam alaikom
j'ai des cours concernant les b-arbres, si tu m'envoi un e-mail je suis content de t'envoi la documentation
j'ai des cours concernant les b-arbres, si tu m'envoi un e-mail je suis content de t'envoi la documentation