begin process at 2012 05 28 13:32:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

Arbres Binaire tri simple d'entier (rapide) ;)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Arbres Binaire tri simple d'entier (rapide) ;)

mardi 7 mars 2006 à 13:58:00 | Arbres Binaire tri simple d'entier (rapide) ;)

bluenox

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. 
                                    
mardi 7 mars 2006 à 23:47:00 | Re : Arbres Binaire tri simple d'entier (rapide) ;)

Guillemouze

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

   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);
}

return n;
}



Cette discussion est classée dans : arbre, tri, cellule, gauche, droite


Répondre à ce message

Sujets en rapport avec ce message

Quelqu'un pourrait-il completer ces lignes Merci [ par pirate75000 ] J'aurais besoin de deux bouton en plus merciet surtout ou pourais-je trouve les plan de brochageint InitJoystick(HWND JHWND)//Initialisation{ UINT uJo arbres binaires en C [ par toto000 ] Bonjour,J'ai un pointeur sur un arbre binaire.Si je vais dans son fils gauche, j'ai un 0 et lorsque je vais dans son fils droit, j'ai un 1.Je voudrai la souris [ par Adeon ] salut ! j'ai un ptit probleme, je suis en train de creer un jeu, mon personnage tourne sur lui meme avec les coordonees X de la souris, en effet, qua Arbre binaire [ par raton ] Salut a tous. Je me permets de venir vous demandez une petite vérification.Je suis en train de créer un arbre binaire et je voulais savoir si l'un d'e selection et zoom [ par phneutrex ] Salut , j'ai une fenêtre principale qui contient à sa gauche une CFormView et à sa droite une fençetre OpenGL. Mon probleme est le suivant. J'ai un nu Tri Tas avec arbre P-aire [ par LiGrAnD ] bonjour, j'ai besoin de programmer un tri par tas generaliser aux arbres p-aire et non pas binaire comme habituellement.pourriez vous m'aider car la j CRichEditCtrl & Nombres arabes [ par Toutoun13 ] Bonjour,J'essaye d'ecrire dans un CRichEditCtrl de l'arabe. Je ne rencontre aucun problème pour ecrire du texte, en passant le code ASCII unicode des creation récursive de l'arbre de codage de la compression Huffman [ par kuja2053 ] Bonjour, Voila mon probleme : ayant un projet sur la compression de Huffman, j'ai décider de changer le format de l entete de mon fichier suite à un c Arbre Quaternaire / Quadtree [ par toom_ca ] <td class="alt2" style="BORDER-RIGHT: #d1d1e1 1px solid; BORDER-TOP: #d1d1e1 0px s programme en c ou c++ [ par desco182 ] Salut !!!!!!! j'espere que tout va de bon train pour vous . j'ai ce code en le compilant me donne 2 erreurs : 1-declaration terminate incorrectly. 2-


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,011 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales