Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WDxx]Algo gestion d'arbre

9 réponses
Avatar
Vincent
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent

9 réponses

Avatar
nwjb
Le Mon, 24 Jul 2006 21:28:27 +0200, Vincent a écrit:

Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à
son
tour avoir des fils)




Un arbre quoi....

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.




On ne peut pas oublier de branche puisque le 'raccrochage' de branches se
fait
automatiquement lors du ArbreAjoute.

Existe-t'il un algorithme pour constriure et le constriure sous windev
ainsi
qu'un modèle de table pour le stocker ?



Nous utilisons des choses du genre:
Clé,contenu,Clé du père,niveau
Avec: Clé= clé primaire de la ligne
ContenuÎ qui est utile de la ligne
Clé du père= clé primaire du père de la feuille
niveau= facultatif est la "profondeur' dans l'arbre

Il y a toujours une ligne racine qui n'a pas de père et constitue ainsi
le point de départ.

et surtout pour le gérer ( ajout, suppression ....)



Rien de spécial que les trucs classiques, Hormis:
.l'affichage demande de parcourir l'arbre depuis la racie
.la fonction destruction qui doit être récursive
.les fonctions spécifiques aux arbres (du genre déplacer une branche)
Merci d'avance

Vincent







--
J.Bratières

Enlever paspub pour répondre
Please remove paspub when answering
Avatar
elecoest
Vincent a écrit :

Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fi ls un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.



Pourquoi ? si on découpe bien la lecture du l'arbre çà ne pose aucun
problème.

Existe-t'il un algorithme pour constriure et le constriure sous windev ai nsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)



Arbreajoute, Arbresupprime... Enuite il faudra adapter ton arbre WinDev
pour faire du drag& drop. Un modèle de table c'est simple c'est une
auto-jointure. Sinon j'ai essayé d'implémenter une solution d'arbres
par représentation intervallaire mais avec HF75 c'est pas top.

Merci d'avance

Vincent


Avatar
Gilles TOURREAU
Vincent avait énoncé :
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un seul
père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent



Perso, je te conseille de faire tout çà en POO...

Cordialement

--
Gilles TOURREAU
Responsable informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Stéphane Miqueu
Vincent a écrit :
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent




Bonsoir,
Tu peux chercher de la doc avec 'nested tree' comme mot clé. Tu gères
ton arbre en une seule table d'une façon relativement simple. Je dois
avoir un exemple quelque part. Je cherche ça et je te le poste si je le
retrouve.

--
Ami Calmant
Stéphane
Avatar
Vincent
merci d'avance, je fais la recherche de mon cote

Vincent

"Stéphane Miqueu" a écrit dans le message de news:
44c68277$0$21618$
Vincent a écrit :
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à
son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev
ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent




Bonsoir,
Tu peux chercher de la doc avec 'nested tree' comme mot clé. Tu gères
ton arbre en une seule table d'une façon relativement simple. Je dois
avoir un exemple quelque part. Je cherche ça et je te le poste si je le
retrouve.

--
Ami Calmant
Stéphane


Avatar
Vincent
j'ai trouvé des info, c'est pas mal et fort interessant.
C'est ce que je cherche
Merci
Vincent

"Vincent" a écrit dans le message de news:
44c7bc8c$0$898$
merci d'avance, je fais la recherche de mon cote

Vincent

"Stéphane Miqueu" a écrit dans le message de
news: 44c68277$0$21618$
Vincent a écrit :
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à
son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev
ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent




Bonsoir,
Tu peux chercher de la doc avec 'nested tree' comme mot clé. Tu gères
ton arbre en une seule table d'une façon relativement simple. Je dois
avoir un exemple quelque part. Je cherche ça et je te le poste si je le
retrouve.

--
Ami Calmant
Stéphane






Avatar
Stéphane Miqueu
Vincent a présenté l'énoncé suivant :
j'ai trouvé des info, c'est pas mal et fort interessant.
C'est ce que je cherche
Merci
Vincent

"Vincent" a écrit dans le message de news:
44c7bc8c$0$898$
merci d'avance, je fais la recherche de mon cote

Vincent

"Stéphane Miqueu" a écrit dans le message de
news: 44c68277$0$21618$
Vincent a écrit :
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut à
son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev
ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent




Bonsoir,
Tu peux chercher de la doc avec 'nested tree' comme mot clé. Tu gères
ton arbre en une seule table d'une façon relativement simple. Je dois
avoir un exemple quelque part. Je cherche ça et je te le poste si je le
retrouve.

-- Ami Calmant
Stéphane









J'ai retrouvé du code mais ce sont des classes en PHP, si tu es
intéressé je te fais passer le tout ...
Avatar
Vincent
Non merci, c'est très sympa, par rapport à tes infos j'ai aussi trouvé une
classe en php
(j'imagine que ce doit être les mêmes)
Encore merci

Vincent

"Stéphane Miqueu" a écrit dans le message de news:

Vincent a présenté l'énoncé suivant :
j'ai trouvé des info, c'est pas mal et fort interessant.
C'est ce que je cherche
Merci
Vincent

"Vincent" a écrit dans le message de news:
44c7bc8c$0$898$
merci d'avance, je fais la recherche de mon cote

Vincent

"Stéphane Miqueu" a écrit dans le message de
news: 44c68277$0$21618$
Vincent a écrit :
Bonjour,

je désire gérer un arbre, un père peut avoir plusieurs fils ( le fils
un
seul père ) ;
les fils sont des noeud et/ou des feuilles ( si c'est un noeud il peut
à son
tour avoir des fils)

L'arbre peut devenir vite compliqué, pour le lire et le constriure
avec
windev ( toto + tab ....) et ne pas oublier de branche.

Existe-t'il un algorithme pour constriure et le constriure sous windev
ainsi
qu'un modèle de table pour le stocker ?
et surtout pour le gérer ( ajout, suppression ....)

Merci d'avance

Vincent




Bonsoir,
Tu peux chercher de la doc avec 'nested tree' comme mot clé. Tu gères
ton arbre en une seule table d'une façon relativement simple. Je dois
avoir un exemple quelque part. Je cherche ça et je te le poste si je le
retrouve.

-- Ami Calmant
Stéphane









J'ai retrouvé du code mais ce sont des classes en PHP, si tu es intéressé
je te fais passer le tout ...




Avatar
Eric
j'ai développé une petite appli contenant entre autres
choses la gestion d'un organigramme multi niveaux dont vous trouverez
quelques
éléments ci-dessous:
le fichier de fonction appelé "Profession" a pour rubriques
principales "CodeProf","Libellé","Niveau"
et "CodeSup", cette derniére correspondant au N° de code su
supérieur hiérarchique.voici
le code de remplissage du treeview(code d'initialisation) qui affiche
toute
l'arborescence hiérarchique ainsi que les nom des salariés de chaque
fonction:

ElémentCourant,IdSupérieur,Image sont des chaînes
NPos est un entier
ArbreSupprimeTout(arbOrganigramme)
Image = "C:Mes ProjetsMéthode UVA 1USINE-.BMP"
ArbreAjoute(MoiMême,saiRaisonSociale,Image,Image,"*S",aDernier) ;
ArbreDéroule(MoiMême,saiRaisonSociale)
// Pour chaque profession du fichier "Profession", récupération de la
chaine
hiérarchique ...
POUR TOUTE Profession sur Niveau
ElémentCourant = Profession.Libellé
IdSupérieur = Profession.CodeSup
NPos = HSauvePosition(Profession,Niveau)
// Cette boucle est la clé du remplissage du treeview
TANTQUE HLitRecherchePremier(Profession,CodeProf,IdSupérieur) = Vrai
ElémentCourant = Profession.Libellé+TAB+ElémentCourant
IdSupérieur = Profession.CodeSup
FIN
ElémentCourant = saiRaisonSociale+TAB+ElémentCourant
HRetourPosition(NPos)
// que l'on ajoute à l'arbre, noeud déroulé.
SI Profession.Niveau = 1 ALORS Image = "C:Mes ProjetsMéthode UVA
1INFO4-.BMP"
SINON Image = "C:Mes ProjetsMéthode UVA 1PERSONN2-.BMP"
ArbreAjoute(arbOrganigramme,ElémentCourant,Image,Image,Profession.CodePro f,a
Dernier,Profession.CodeProf)
// avec la liste des salariés de la profession (test d'affichage des
salariés
par fonction)
HExécuteRequête(reqSalariéParFonction,hRequêteDéfaut,Profession.C odeProf)
POUR TOUT reqSalariéParFonction sur CodeSal
ArbreAjoute(MoiMême,ElémentCourant+TAB+reqSalariéParFonction.Prénom +"
"+reqSalariéParFonction.Nom,...
aDéfaut,aDéfaut,reqSalariéParFonction.CodeSal,aDernier,reqSalariéPa rFonctio
n.CodeSal)
FIN
// chaque branche étant déroulée
ArbreDéroule(arbOrganigramme,ElémentCourant)
FIN
// Sélection de la racine de l'arbre.
ArbreSelectPlus(MoiMême,saiRaisonSociale)

les quelques lignes situées sous "// avec la liste des salariés de la
profession"
permettent d'afficher les noms des salariés dans la fonction
correspondante.
La boucle TANTQUE est la clé du traîtement.

J'espére que ceci vous aidera.
Bon developpement,
Eric