[clos] ARBRE de Recherche en JAVA(URGENT svp!!!)

Fermé
petitmozart
Messages postés
30
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
31 juillet 2014
- 26 avril 2013 à 12:27
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
- 27 avril 2013 à 22:27
Bonjour chers Amis,
J'ai urgemment besoin d'une solution de code JAVA qui fait ceci:

J'ai une liste d'objets de la forme PATH NOM:
EXP:
0 moi
0-001 toi
0-002 lui
0-001-005 roue
0-001-007 sous
0-002-009 danse
. . . . . . .
.
.
"moi" est le parent de "toi" et "lui" seulement; par contre roue et sous sont les fils de "toi", mais "danse" est le fils de "lui" parcequ'il a la meme racine "0-002"
Bref l'arbre est ainsi construit par niveau.

J'ai besoin d'un code JAVA qui me parcours l'arbre et permet de:
Etant donné un père,me ressort tous ses fils associés et ainsi de suite...

Merci pour tout votre soutien...

4 réponses

NHenry
Messages postés
14929
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 mai 2022
162
26 avril 2013 à 13:06
Bonjour,

Nous ne sommes pas sur ce forum pour faire vos devoirs ou autres PFE/excercices, pour plus d'explication, lisez ce sujet et celui-ci aussi.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
0
petitmozart
Messages postés
30
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
31 juillet 2014

26 avril 2013 à 19:48
Ok,j'ai compri;en faite j'ai pu écrire ce code en Utilisant ZK comme framework pour le front-end:
Ma classe d'objet:
package it.ji.domain;

public class FileInfo extends GenericDto{
//pour TreebonController  et Treebon.zul

 public final String path;
    public final String description;
    public FileInfo(String path, String description) {
           this.path = path;
           this.description = description;
    }
}


Ensuite mon Renderer:
package it.ji.web.renderer;
import it.ji.domain.*;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Treecell;
import org.zkoss.zul.Treeitem;
import org.zkoss.zul.TreeitemRenderer;
import org.zkoss.zul.Treerow;

//pour TreebonController  et Treebon.zul

public class FileInfoRenderer implements TreeitemRenderer<DefaultTreeNode<FileInfo>> {
    public void render(Treeitem item, DefaultTreeNode<FileInfo> data, int index) throws Exception {
        FileInfo fi = data.getData();
        Treerow tr = new Treerow();
        item.appendChild(tr);
        tr.appendChild(new Treecell(fi.path));
        tr.appendChild(new Treecell(fi.description));
    }
}

Et Mon controller:
package it.ji.web.controller;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import it.ji.web.gestione.GenericController;
import it.ji.web.renderer.FileInfoRenderer;


import org.zkoss.zul.DefaultTreeModel;
import org.zkoss.zul.DefaultTreeNode;
import org.zkoss.zul.Tree;
import org.zkoss.zul.Div;
import org.zkoss.zul.TreeModel;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import it.ji.domain.*;
@Controller
@Scope("prototype")
public class TreebonController extends GenericForwardComposer
 {
    private Tree tree;
 
    @Override
    public void doAfterCompose(Div div) throws Exception{
        super.doAfterCompose(div);
       
        TreeModel model = new DefaultTreeModel(
        		  new DefaultTreeNode(null,
        		    new DefaultTreeNode[] {
        		      new DefaultTreeNode(new FileInfo("/doc", "Release and License Notes")),//senza figli
        		      new DefaultTreeNode(new FileInfo("/dist", "Distribution"),
        		        new DefaultTreeNode[] {
        		          new DefaultTreeNode(new FileInfo("/lib", "ZK Libraries"),
        		            new DefaultTreeNode[] {
        		              new DefaultTreeNode(new FileInfo("zcommon.jar", "ZK Common Library")),
        		              new DefaultTreeNode(new FileInfo("zk.jar", "ZK Core Library"))
        		            }),
        		          new DefaultTreeNode(new FileInfo("/src", "Source Code")),
        		          new DefaultTreeNode(new FileInfo("/xsd", "XSD Files"))
        		        })
        		      }
        		  ));
        tree.setModel(model);
        tree.setItemRenderer(new FileInfoRenderer());
    }
}


Cependant,cet exemple est statique,dans la mesure ou il prend directement les valeurs de la classe en question et visulaise;j'aimerais le rendre dynamique,c'est à dire que mon Tree reçoive une liste d'objets de type 'FileInfo'?????
Et me génère l'arbre de tree .


Merci pour tout votre soutien...
0
petitmozart
Messages postés
30
Date d'inscription
mercredi 6 janvier 2010
Statut
Membre
Dernière intervention
31 juillet 2014

27 avril 2013 à 17:28
Bonjour à tous,
j'ai pu ecrire ce bout de code pour mon problème du Tree de Java.

J'ai besoin de le rendre recursif;de tel façon qu'il insert un certain nombre de fois l'objet 'CandidatoDto':
j'ai essayé avec un cycle while,mais ça ne me donne rien.

Pour chaque element(ou rigue) du tree,il doit verifier s'il y a encore des objets è inserer et si oui,les inserer jusqu'à sa profondeur...

SVP comment ècrire cette recursion????

public class TreeController extends GenericController{	

private Tree tree;
private MySimpleTreeModel treeModel;
private SimpleTreeNode rdDep, salesDep; 

@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);		

//create a PersonTreeitemRenderer
tree.setTreeitemRenderer(new TreeitemRenderer() {
@Override
public void render(Treeitem item, Object data,int arg2) throws Exception {
if (data == null) return;

SimpleTreeNode t = (SimpleTreeNode)data;
final CandidatoDto person = (CandidatoDto)t.getData();
Treerow tr = new Treerow();
tr.setParent(item);
tr.appendChild(new Treecell(person.getUsername()));
tr.appendChild(new Treecell(person.getPassword()));
tr.appendChild(new Treecell(person.getNome()));
tr.appendChild(new Treecell(person.getCognome()));
item.setOpen(person.isOpen()); 

item.addEventListener("onOpen", new EventListener() { 
public void onEvent(Event event) throws Exception {
Treeitem item = (Treeitem) event.getTarget();
person.setOpen(item.isOpen()); 
} 
}); 
}
});		

//create treemodel and assign root
treeModel = new MySimpleTreeModel(createTreeData());
tree.setModel(treeModel);		
}

//	public void onClick$addBtn(){
//		CandidatoDto person = new CandidatoDto("NewName", "@zkoss.org","767676",""); 
//		SimpleTreeNode stn = new SimpleTreeNode(person, new ArrayList<SimpleTreeNode>());		
//		treeModel.add(rdDep, stn);
//	}	

private SimpleTreeNode createTreeData() {
//Create nodes for department R and D
String[] name = {"Pierre","Adam","Thomas"};
String[] accountId = {"p001","a002","t003"};		
//Create branch department R and D and assigned children to it. rdDep's children are contained in ArrayList alc.
rdDep = new SimpleTreeNode(new CandidatoDto("VOUU","R&D","",""), createTreeChildren(name, accountId));


al.add(rdDep);		
return new SimpleTreeNode("ROOT",al);
}

int m=4;

private List<SimpleTreeNode> createTreeChildren(String[] name, String[] accountId) {

ArrayList<SimpleTreeNode> alc = new ArrayList<SimpleTreeNode>();

for(int i =0; i < name.length; i++){
CandidatoDto person = new CandidatoDto(name[i],name[i] + "@zkoss.org",accountId[i],"OUII");
SimpleTreeNode s =null;

if(i==0){

ArrayList<SimpleTreeNode> alc1 = new ArrayList<SimpleTreeNode>();
//alc1.add(person1);
 s=new SimpleTreeNode(person, createTreeChildren1(name, accountId));
System.out.println(i+"++++");

alc.add(s);

}else{

SimpleTreeNode stn = new SimpleTreeNode(person,new ArrayList<SimpleTreeNode>());
alc.add(stn);

}
}
return alc;
}



private List<SimpleTreeNode> createTreeChildren1(String[] name, String[] accountId) {

ArrayList<SimpleTreeNode> alc = new ArrayList<SimpleTreeNode>();

for(int i =0; i < name.length; i++){
CandidatoDto person = new CandidatoDto(name[i],name[i] + "@zkoss.org",accountId[i],"OUII");
SimpleTreeNode s =null;
//			      while(m>0){
//			    	  ArrayList<SimpleTreeNode> alc1 = new ArrayList<SimpleTreeNode>();
//			    	  s=new SimpleTreeNode(person, createTreeChildren1(name, accountId));
//			    	  SimpleTreeNode stn1 = new SimpleTreeNode(person,new ArrayList<SimpleTreeNode>());
//						alc1.add(s);
//			    	  m--;
//			      }


SimpleTreeNode stn = new SimpleTreeNode(person,new ArrayList<SimpleTreeNode>());
alc.add(stn);
}
return alc;
}




private class MySimpleTreeModel extends SimpleTreeModel{

public MySimpleTreeModel(SimpleTreeNode root) {
super(root);
}


public void add(SimpleTreeNode parent, SimpleTreeNode newNodes){

List<SimpleTreeNode> children = parent.getChildren();
int length = children.size();
children.add(newNodes);
fireEvent(parent, length, length, TreeDataEvent.INTERVAL_ADDED);
}
}


}





Merci pour tout votre soutien...
0
cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
27 avril 2013 à 22:27
Salut,

Codes-Sources est un site communautaire où des bénévoles apportent de l'aide à ceux qui le demande. Nous demandons pas grand chose en retour : juste un peu de reconnaissance et de respect.
Venir poser une question sur le forum en disant que c'est urgent est un manque de respect : qu'est-ce que ca t'apporte de préciser que c'est urgent ? Tu crois qu'en disant cà tu seras prioritaire par rapport aux autres membres ? Tu crois qu'on va se dépêcher à te répondre parce que tu es dans l'urgence ?

Et bien non, bien au contraire ! Dire que c'est urgent ne nous donne vraiment pas envie d'aider. Nous avons tous nos tracas quotidiens, avec nos patrons qui nous disent qu'il leur faut telle fonctionnalité pour demain matin à 8 h (si ce n'est pour la veille). Alors je traque tout ceux qui demande de l'aide de façon urgente histoire de bien leur faire comprendre qu'on y gagne rien à aider les gens, alors le moins que tu peux espérer, c'est de trouver quelqu'un qui veuille bien t'aider, l'urgence elle n'est que pour toi, et surtout pas pour nous !

Sujet clos.
______________
0