bluenox
Messages postés2Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention20 juillet 2007
-
7 mars 2006 à 13:58
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
7 mars 2006 à 23:47
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!!
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 7 mars 2006 à 23:47
tu test pas si tu as un fils gauche et un fils droit. ton erreur de segmentation doit arriver quand tu n'a qu'un seul fils (ou pas du tout).
if (n==NULL) return n;if (n->gauche NULL) n->droite tri(n->droite); //seul un fils droit (ou pas de fils)else if (n->droite NULL) n->gauche tri (n->gauche); //seul un fils gauche
else { // deux fils
/** 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 *******/