begin process at 2012 05 30 11:23:28
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Recherche dans un arbre (en C)


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

Recherche dans un arbre (en C)

samedi 22 août 2009 à 14:53:44 | Recherche dans un arbre (en C)

salsa81

Bonjour,

Voilà je suis en train de faire quelques révision sur les arbres en C et je bloque sur un point.

J'ai un arbre dont voici la structure :

/* Définition d'un noeud */
typedef struct n {
typedonnee val;
struct n *gauche;
struct n *droit;
} typeNoeud;


Cet arbre contient des valeurs entrières saisies au clavier par l'utilisateur.

J'aimerai maintenant supprimer les valeurs qui sont paires. Pour cela la fonction detruireNoeud a déjà été créée.

/* Detruire le noeud dont la valeur est val */
/* Résultat : FAUX si la valeur n'est pas dans l'arbre */
int detruireNoeud (typeNoeud **racine, int val) {
typeNoeud *noeud, *pere;
int res;

if (*racine == NULL) {
res = FAUX; // Valeur pas trouvee
} else {
noeud = *racine;
if (val < noeud->val) {
res = detruireNoeud (&noeud->gauche, val);
} else if (val > noeud->val) {
res = detruireNoeud (&noeud->droit, val);
} else {
res = VRAI;
// On a trouve le noeud a detruire
if (noeud->gauche == NULL) { // Il n'a pas de fils gauche
*racine = noeud->droit;
free (noeud);
} else if (noeud->droit == NULL) {// Il n'a pas de fils droit
*racine = noeud->gauche;
free (noeud);
} else {
// On va chercher le + grand noeud dans le sous arbre de gauche
noeud = noeud->gauche;
if (noeud->droit == NULL) {
(*racine)->gauche = noeud->gauche;
} else {
while (noeud->droit != NULL) {
pere = noeud;
noeud = noeud->droit;
}
pere->droit = noeud->gauche;
}
// Noeud contient la valeur qui va remplacer la valeur du noeud à détruire
(*racine)->val = noeud->val;
free(noeud);
}
}
}
return res;
}


Maintenant je bloque, comment faire pour que la suppression se fasse uniquement sur les valeurs paires ? Avez vous une idée ? un bout de code ?

Merci encore pour votre aide.

dimanche 23 août 2009 à 09:21:48 | Re : Recherche dans un arbre (en C)

BruNews

Administrateur CodeS-SourceS

if(v & 1) IMPAIR;


ciao...
BruNews, MVP VC++



Cette discussion est classée dans : droit, gauche, val, noeud, racine


Répondre à ce message

Sujets en rapport avec ce message

Arbres binaires [ par His_Dudeness ] Bonjour, je suis en train de me taper un tp pour un cours sur les arbres. Dans le code qui suit, la racine redevient null a chaque fois qu'elle sort Problème pointeur en c++ [ par ch3mical ] Bonjourj'ai un problème avec une partie de code , lorsque je créer mon arbre binaire jai un message d'erreur lorsque je rappel ma fonction récursive . 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 Remplacer le Click droit par un long click gauche. [ par cedoli ] Salut à tous, je suis l'heureux propriétaire d'un Macbook, et débutant en C. J'utilise Windows avec le logiciel Bootcamp pour coder. Et j'aimerais fai Itérateurs en c++ 2 [ par Saris ] Lorsque je crée un iterateur sur un Arbre, comment puis-je faire en sorte que cet iterator point sur la racine de mon arbre?class Arbre{ private :  cl simulation majuscule gauche au droit [ par Adeon ] Salut!j'aimerai, pour simuler l'appuie de la touche majuscule, avoir son nom et son numero ( a precisé s'il est en hexadecimal ou en decimal )je voudr RECURSIVITE pour tous les traitements sur les arbres et liste chaînée - Langage C [ par HerveYims ] Bonjour à tous, SVP j'ai un bug avec mon programme ci-dessous en fait : Soit un fichier des concerts donnés en 2011 en Europe comprenant les noms de [clos] bjr, pourriez vous m'aider a terminer ce progmme stp? [ par ley1805 ] #include #include #include #include struct noeud { struct noeud *gauche; int info; struct noeud *droite; }; typedef struct noeud *pnoeud; pno suppression d'un noeud dans une liste chaînée avec C++ [ par saidkoukou ] Bonjour, je cherche un bout de code C++(ou une méthode) qui me permet de supprimer un noeud dans une liste chaînée. Merci de me répondre dans le temps Jeu sur console [ par hdx75 ] Bonjour je suis en seconde et je débute en C Je dois faire un jeu sur console sous forme de tableau 10x10 du genre jewels où il faut faire des groupes


Nos sponsors


Sondage...

Comparez les prix

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 : 0,484 sec (4)

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