Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3242 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Parcours arbre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Parcours arbre

n°725553
Bobarctor
Posté le 14-05-2004 à 10:09:11  profilanswer
 

Bonjour,
 
J'ai une petite question sur le parcours d'un arbre à la manière d'une liste
chainée en C.
J'ai une table dans une base de donnée (mysql) composée comme suit:
 
un champ nom, un champ temps, un champ parent, un champ id
 
j'ai actuellement un arbre de ce style:
 
    1
   /  \
  3   2
 /
4
 
J'aimerais pouvoir sortir la somme de temps pour un noeud precis:
exemple pour le noeud 1 qui serait en fait la somme de temps de 2, 4 ou le
noeud 3 celle de 4 ou le noeud 2, la valeur de 2.
 
J'ai fait la fonction suivante qui prend en paramètre le numéros du noeud
pour lequel je veux connaitre la somme des temps attachés, le temps, et la
connexion à la SGBD.
 
function get_temps($id_tache, $temps, $lien) {
 $query = "select t_id from t_tache where t_parent = '$id_tache'";
 $result = mysql_query($query, $lien);
 $nbr = mysql_num_rows($result);
 
 if ($nbr == 0) {
  $query = "select t_temps_est from t_tache where t_id = '$id_tache'";
  $result2 = mysql_query($query, $lien);
  $row2 = mysql_fetch_row($result2);
  return ($row2[0]);
 } else {
  while ($row = mysql_fetch_row($result) ) {
   $temps += get_temps($row[0], $temps, $lien);
  }
 }
 return ($temps);
}
 
J'ai essayé avec des valeurs comme 50 et 20 pour les noeud 2 et 4 mais ça me
sort 120 !
Je ne sais pas trop comment faire et surtout comment optimiser mon truc
parce que j'ai remarqué que sur de gros arbres d'une centaines
d'enregistrements c'était plutôt lent.
 
Merci beaucoup de vos réponses.

mood
Publicité
Posté le 14-05-2004 à 10:09:11  profilanswer
 

n°725585
boulax
Inserer phrase hype en anglais
Posté le 14-05-2004 à 10:31:17  profilanswer
 

A quoi sert l'argument $temps ? Pourrais tu mettre ton code entre balise cpp /cpp ? Et quelques commentaires ? Le code semble correct a priori. Par contre pour l'optimisation jte conseille plutot de construire un arbre implémenté sous forme de liste chainée objet ou d'un tableau, ce sera plus rapide pour l'acces aux fils que toutes ces requetes !


---------------
Posté depuis des chiottes, sales. Me gusta.
n°725609
boulax
Inserer phrase hype en anglais
Posté le 14-05-2004 à 10:42:31  profilanswer
 

Ok je pense voir le problème. Ton argument temps ne sert à rien ! Pire il court-circuite le mécanisme de récursivité. Supprime le.


---------------
Posté depuis des chiottes, sales. Me gusta.
n°725639
Bobarctor
Posté le 14-05-2004 à 10:55:36  profilanswer
 

ok mais je l'initialise comment alors ?

n°725640
Bobarctor
Posté le 14-05-2004 à 10:56:23  profilanswer
 

mais c'est magique !!! ça marche ! :)

n°725644
Bobarctor
Posté le 14-05-2004 à 10:57:16  profilanswer
 

ok j'ai capté l'incrémentation était faites deux fois à cause de $temps, c'est plus clair.
 
Merci beaucoup.

n°725800
boulax
Inserer phrase hype en anglais
Posté le 14-05-2004 à 11:48:56  profilanswer
 

Bobarctor a écrit :

mais c'est magique !!! ça marche ! :)


ché la machique  :o


---------------
Posté depuis des chiottes, sales. Me gusta.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Parcours arbre

 

Sujets relatifs
[JTree] Personnalisation des icones des feuilles de l'arbre[C++/STL] list et parcours avec un itérateur : problème
comment créer un nouveau arbre DOM avec l'API de xerces ?Arbre binaire, trouver la profondeur d une node.
Arbre binaire, comment copier tout les elements d un arbre dans ....Affichage d un arbre par une file
[PHP-ORACLE] parcours des résultats d'une requête : première ligne non[ASM] Parcours d'un tableau "BYTE" et "WORD"
Parcours buffer circulaireParcourir un arbre DOM
Plus de sujets relatifs à : Parcours arbre


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)