Bonjour ts le monde
Voila mon probleme trier un arbre recursivement;
Mon code me donne la fameuse erreur segmentation.
J'envoie dans ma fonction l'arbre qui verifie que le cote gauche est plus petit (pour chaque noeud), ca a l'air ok, ensuite si il est egale (je sais pas trop mais pas tres grave).
La ou je galere c'est que lorsque mon arbre est arrivé a gauche j'ai l'impression qu'il ne peux plus remonter
Je pense que le code merde pour la branche de droite mais pourquoi? Comment le resoudre!!
/******************************************************************************************/
/** ALGORITHME DE TRI d'un arbre */
/******************************************************************************************/
Noeud* tri (Noeud *n){
Noeud *cellule, *T;
if(n==NULL) return n;
if(n->gauche->donnee > n->droite->donnee){
cellule=n->droite; n->droite=n->gauche; n->gauche=cellule;
}
else if(n->gauche->donnee == n->droite->donnee){
/** Suppression de l'element de droite puis on se place dans N->gauche*/
cellule=n->droite; n->droite=cellule->droite;puts("yyyy");
/** On recherche l'element a ajouter dans la liste*/
for(T=n->gauche; T->droite!=NULL; T=T->droite) {}
T->droite=cellule; n=T;puts("lll");
}puts("rrr"); /***** C'est apres le 3 eme que ca merde du a mon arbre initial *******/
n->gauche=tri(n->gauche);
n->droite=tri(n->droite);
}
Merci a ceux qui jetterons un oeil.
Les logiciels c'est comme le sexe c'est meilleur quand c'est libre et gratuit.