bonjour
j'ai trouvé ce code qui répond à mes besoins sur l'arbre n'aire mais il est en C si quelqu'un peut m'aider à le déveloper en php puisque j'ai pas une grande connaissance en C surtout les structures
merci d'avance.
noeud_t *creer_fils(noeud_t *n,const char c){
unsigned idx = char2index(c);
if (!n->fils[idx]){
n->fils[idx] = creer_noeud(c); // nouveau fils
}
return n->fils[idx];
}
// Ajoute un mot dans l'arbre étant donné sa racine
void ajouter_mot(arbre_t *a,const char *s){
unsigned i,idx_cur,n = strlen(s);
noeud_t *noeud_cur = a;
for(i=0;i<n;++i){
idx_cur = char2index(s[i]);
noeud_cur = creer_fils(noeud_cur,s[i]);
}
creer_fils(noeud_cur,'\0');
}
// Supprime tout le sous arbre à partir d'un noeud n
void supprimer_sous_arbre(noeud_t *n){
unsigned i;
for(i=0;i<=NB_CARACTERE;++i){
if (n->fils[i]) supprimer_sous_arbre(n->fils[i]);
free(n->fils[i]);
}
free(n->fils);
}
// Supprime un arbre étant donné sa racine
void supprimer_arbre(arbre_t *a){
supprimer_sous_arbre(a);
}
// Recherche si un mot figure dans un dictionnaire
int trouver_mot(const arbre_t *a,const char *s){
unsigned i,idx_cur,n = strlen(s);
const noeud_t *noeud_cur = a;
for(i=0;i<n;++i){
idx_cur = char2index(s[i]);
if(!noeud_cur->fils[idx_cur]) return 0;
else noeud_cur = noeud_cur->fils[idx_cur];
}
return 1;
}
void ajoute_medor(arbre_t *a,const char *s){
printf("ajoute le mot %s",s);
ajouter_mot(a,"tapir");
}
void cherche_medor(const arbre_t *a,const char *s){
int trouve = trouver_mot(a,s);
printf("est ce que le dictionnaire contient %s ? %i\n",s,trouve);
}
int main(){
arbre_t *a = creer_arbre();
printf("1) ajoute les mots\n");
ajoute_medor(a,"tapir");
ajoute_medor(a,"tapis");
ajoute_medor(a,"tapisser");
printf("2) cherche les mots\n");
cherche_medor(a,"tapir");
cherche_medor(a,"tapis");
cherche_medor(a,"plop");
printf("3) supprime l'arbre\n");
supprimer_arbre(a);
return 0;
}