Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : arbre naire [ Algorithme / Maths ] (amani20081984)

lundi 2 juin 2008 à 21:53:23 | arbre naire

amani20081984



Salut, je cherche un code en C qui me permet de créer un arbre naire et de le parcourir. Svp aidez moi j'en aurai besoin le plutôt possible. Merci pour votre collaboration et j'attends vos propositions

mardi 3 juin 2008 à 14:48:45 | Re : arbre naire

coucou747

salut

struct arbre;

struct arbre{
 struct arbre * suivants;
 int nombre_branches;
 ....
}

c'est pas specialement dur...

void parcourrir(struct arbre * a){
  int i;
  struct arbre * b=a;
  for (i=0; i<a->nombre_branches; i++){
    ... // utilise b ici...
    parcourrir(b);
    b++;
  }
}

mardi 3 juin 2008 à 20:43:37 | Re : arbre naire

amani20081984



merci  c gentil

mardi 3 juin 2008 à 20:50:26 | Re : arbre naire
mardi 3 juin 2008 à 23:35:53 | Re : arbre naire

nickydaquick

Membre Club
Salut,

coucou747, tu as parfaitement raison mais mefie toi des Stack overflow avec ta recursivite.
amani20081984: dans kel sens veux tu parcourir ton arbre?  voici des choix:
1- Les noeuds niveau par niveau (per level)
2- un noeud suivi de ses noeuds-fils (post fix)
3- un noeud precede par ses noeuds-fils (pre fix)
4- un noeud enchevetre parmis la liste des noeuds fils (in - n -fix)

pour eviter la recursivite utilises une boucle et une queue (file d'attente). Je reutilises le code de coucou747:

#include <deque>
using namespace std;

typedef struct arbre{
 struct arbre * suivants;
 int nombre_branches;
 ....
}arbre, *parbre;

void parcourir(struct arbre * const a){
  deque<parbre> file;
  parbre b=a;
    file.push_back(b);

  while(!file.empty())
    {  
          b = file.front();file.pop_front();   
          int i= (*b).nombre_branches;
          while(--i>=0)file.push_back(suivants[i]);
    ... // utilise b ici...
  }
}


J'espere avoir aide, salut

http://www.liveplayaz.com
je suis heureux de faire partie d'une grande famille ...!

mardi 3 juin 2008 à 23:43:12 | Re : arbre naire

coucou747

tu simules la Stack, c'est vraiment utile ?

mercredi 4 juin 2008 à 14:06:25 | Re : arbre naire

Pistol_Pete

Salut

Perso, je suis plus de l'avis de nicky: j'essaye des que possible d'éviter la recurssivité. Je pense qu'au niveau des performances, c'est bien meilleur d'avoir un algo itératif que récursif.


A+
Mon site internet : [ Lien ]


mercredi 4 juin 2008 à 14:12:45 | Re : arbre naire

coucou747

pistol_pete, en fait, d'une part, les compilateurs modernes implementent le tail rec pour certaines fonctions ( pas ici, je te l'accorde ) ensuite, il simule une Stack pour eviter la recursivite... donc en fait, son algo est plus lent que le mien en pratique...

mercredi 4 juin 2008 à 15:08:38 | Re : arbre naire

Pistol_Pete

Ok, mais alors comment peux tu savoir que ton compilo transforme bien ta fonction recurssive en une fonction iterative?


A+
Mon site internet : [ Lien ]


mercredi 4 juin 2008 à 15:23:42 | Re : arbre naire

coucou747

si elle est tail-rec, alors gcc avec l'option -O2 te la transforme en itérative.

la, la fonction n'est pas tail récursive.


1 2

Cette discussion est classé dans : arbre, naire


Répondre à ce message

Sujets en rapport avec ce message

créer un arbre à partir d'un fichier word [ par yeager ] Bonjour je suis nouveau et débutant en langage CJe souhaite pouvoir lire un fichier word comportant des informations sur plusieurs livres. A partir de Construction d'un arbre à partir d'une chaine de caractères [ par dahlsimus ] Bonjour, Je souhaite construire un arbre représentant une expression booléenne saisie sous le forme d'une chaîne de caractère (ex: (a+b).C avec + OR e [MFC] Utilisation de la classe CTreeCtrl, niveau dans l'arbre [ par karine3884 ] Bonjour, Je programme sous Visual Studio C++ 6.0. J'utilise un CtreeCtrl pour créer un arbre (une arborescence). J'aimerai ajouter un item au même ni Arbre de Huffman: y'a t-il qq1 pour me corriger?? [ par danje ] Bonjour, Voilà, je viens de faire un arbre de Huffman suivant un tableau de fréquence de répétition de caractère. Mais je crois que mona rbre est faux Problem de 'left operand must be a lvalue" [ par Orezza ] Voila je vous mets le code qui est un code trouver sur ce site mais que j'ai modifié. je ne comprends pas les erreurs de compilations pourriez-vous ra supprimer un mot d'un arbre en C [ par toto000 ] Bonjour, J'ai un arbre ternaire de recherche et je voudrai supprimer un mot dans cet arbre.Voilà ce que j'ai fais mais ça ne marche pas pour tous les Recherce par préfixe [ par toto000 ] Bonjour, J'ai un arbre ternaire de recherche (un dictionnaire) et je voudrai rechercher tous les mots commencants par une certaine expression.Je pense arbre BSP [ par Zyvon ] Je suis en train de coder la gestion d'un niveau avec un arbre bsp et je n'arrive pas à coder une fonctions.Face decoupeface (Face f, const facePrinci arbre bsp [ par Zyvon ] Voila j'ai deja poser ma question sous le graphismemais comme seul Neodante (merci à lui) m'a repondu sans m'aider j'essaye ici...Je suis en train de error LNK2005 que faire ? vite je v me pendre !!!! [ par Milhouse57 ] Voila alors je debute en C++, et je dois faire un projet avec un arbre binaire !! (visual C++ 6.0)Le probleme c que lorsque je build, j'ai toutes les


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.