Construire un arbre en java

Signaler
Messages postés
57
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
17 mars 2015
-
Messages postés
57
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
17 mars 2015
-
Bonjour,
j'aimerai construire un arbre comme suit: J'ai deux listes :
ChoixX={1,2,3}
ChoixY={1,2,4};

On a deux acteurs; X et Y; chaqu'un veut prendre un nombre d'éléments parmi sa liste, çàd X veut prendre soit : 1 , 2 ou 3 éléments : {1},{1,2},{1,2,3}
Y veut aussi soit prendre 1, 2 ou3 éléments comme suit : {1},{1,2},{1,2,4} à condition: les éléments pris par un acteur seront excluent des choix de deuxième acteur . Je veux construire cet arbre dont chaque noued représente : l'acteur, et les éléments à affecter.

Voici un essaye mais j'ai pas arrivé à construire cet arbre :

private void buildTree(DefaultMutableTreeNode racine,int Acteur1, int Acteur2, ArrayList<Integer> Actions1, ArrayList<Integer> Actions2){
	   if(Actions1.size() != 0 && Actions2.size() != 0){
	    for(int i = 0; i < Actions1.size(); i++){
	    	String S = "(";
	    	for(int h = 0; h <= i; h++){
	    		S = S + Actions1.get(h)+",";
	    		if(Actions2.contains(Actions1.get(h))){
	    		   Actions2.remove(Actions2.indexOf(Actions1.get(h)));
	    		}
	    		Actions1.remove(h);
	    	}
	    	S = S + ")";
	      DefaultMutableTreeNode rep = new DefaultMutableTreeNode(Acteur1+","+i+"," +S);
	       //Et une branche 
	       for(int j = 0; j < Actions2.size(); j++){
	           S = "(";
	           for(int h = 0; h <= j; h++){
		       S = S + Actions2.get(h)+",";
		       if(Actions1.contains(Actions2.get(h))){
			   Actions1.remove(Actions1.indexOf(Acteur2.get(h)));
			}
		        Actions2.remove(h);
		    }
		  S = S + ")";	
	          DefaultMutableTreeNode rep2 = new DefaultMutableTreeNode(Cluster2+","+j+ ","+S);
	          //Cette fois, on ajoute les feuilles
	         /* for(int k = 1; k < 5; k++)
	            rep2.add(new DefaultMutableTreeNode("Sous-fichier enfant n°" + k));*/
	            rep.add(rep2);
	            if(Actions1.size() == 0){
	  	        rep.add(new DefaultMutableTreeNode("feuille"));
	             if(Actions2.size() == 0){
	      	        rep2.add(new DefaultMutableTreeNode("feuille"));
	             } 
	            buildTree(racine,Acteur1, Acteur2, Actions1, Actions2);
	            Actions1 = (ArrayList<Integer>) this.Actions1.clone();
		         Actions2 = (ArrayList<Integer>) this.Actions2.clone();   
	        }
	      racine.add(rep);	      
	    }
	 }
  }



Est ce quelqu'un parmi vous a une réponse, j'en suis vraiment besoin. merci en avance.

2 réponses

Messages postés
16373
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
4 août 2021
122
"X veut prendre soit : 1 , 2 ou 3 éléments : {1},{1,2},{1,2,3}"
Il ne peut pas prendre {2}, {3}, {1,3}, {2,3} ?

"les éléments pris par un acteur seront excluent des choix de deuxième acteur"
Par exemple, X prends {1}, que peux prendre Y ? {2} et {2,4} ?
Messages postés
57
Date d'inscription
dimanche 6 décembre 2009
Statut
Membre
Dernière intervention
17 mars 2015

Bonjour KX;

merci pour votre attention. Oui, je veux que les acteurs prennent les éléments selon cet ordre. Par exemple: X peut prendre {1},{1,2},{1,2,3} et pas d'autre combinaisons. Et quand X choisi , Y doit choisir selon l'ordre les éléments non pas encore choisi par X. Si X choisi de prendre 2 éléments qui sont {1,2}, Y a qu'une possibilité : est de choisir un élément :{4}. Dans chaque noeud, un acteur choisi un nombre d'élements, le prochain noeuad représente les choix du deuxième acteur. On atteint les feuilles dans cet arbre, quand une liste est vide.
est ce que t'as des proposition, j'en ai vraiment besoin. merci bcp