#include #include #include #include "arbrebinaire.h" struct ArbreBinaireInfo { void ** info; int Ind_dernier ;//indice du dernier element int Max_elements;//indice de la derniere case utilisable int taille_element;//taille max des elements a ajouter. }; ArbreBinaire CreerArbreBinaire(int taille_element) { int i; ArbreBinaire p =(ArbreBinaire)malloc(sizeof(struct ArbreBinaireInfo)); p->Max_elements = 2; p->Ind_dernier = -1; p->taille_element=taille_element; for(i=0; i<(p->Max_elements+1);i++) p->info[i]=NULL; return p; } void Ajouter(ArbreBinaire a, void * val)//verifier effet de bor { int i; if(a->Ind_dernier==a->Max_elements) { int b=a->Max_elements+1; for(i = b; i< 2*b;i++) a->info[i]=NULL; a->Max_elements=(a->Max_elements+1)*2-1; } a->Ind_dernier++; a->info[a->Ind_dernier] = malloc(a->taille_element); memcpy(a->info[a->Ind_dernier],val,a->taille_element); } int FilsGauche(ArbreBinaire A, int indice) { if(A->info[2*indice]==NULL) return -1; else return 2*indice; } int FilsDroite(ArbreBinaire A, int indice) { if(A->info[2*indice+1]==NULL) return -1; else return (1+2*indice); } int Racine(ArbreBinaire A) { return 0; } void * ValeurSommet(ArbreBinaire A, int indice) { return A->info[indice]; } void ArbreLiberer(ArbreBinaire a) { int i; for(i =0; iMax_elements+1;i++) free(a->info[i]); free(a); } void afficher(ArbreBinaire a) { int i; for(i =0; iMax_elements+1;i++) { printf("element p->info[%d]: %s\n",i,(char *)a->info[i]); } } int pere(ArbreBinaire a, int x) { if(x=0) return 0; if (x>a->Ind_dernier); return -1; return ((x-1)/2); }