Bonjour,
je trouve une difficulté pour l’implémentation d'un intree en java.
est ce que vous pouvez m'aider meme par m'envoyer des liens qui me seront utiles?
merci d'avance.
Version imprimable
Bonjour,
je trouve une difficulté pour l’implémentation d'un intree en java.
est ce que vous pouvez m'aider meme par m'envoyer des liens qui me seront utiles?
merci d'avance.
Jamais entendu parler d'un intree en Java. Google non plus d'ailleurs...
vous voulez pas dire une entrée par hasard ?
un intree. je connais pas
UN in_tree c'est un arbre dans lequel chaque noeud a au plus un successeur et un nombre quelconque de predecesseur.
appelé aussi pile spaguetti
voici un lien ou il y en a une photo d'un in_tree
http://fr.wikipedia.org/wiki/Pile_spaghetti
j'ai l'idée d'utiliser une structure noeud dans laquelle chaque noeud a un pointeur sur un ensemble de successeurs et un pointeur sur un seul predecesseur
mais je ne sais pas comment faire en java
En Java les structures, ce sont des classes, et les pointeurs sont de simples variables de type objet.
salut
c'est quoi la difference entre
public class a
et
public final class a
et merci d'avance
Une classe final ne peut pas être hérité par une autre classe.
Cela a l'air assez simple.
Si on suppose que tous les nœuds à chaîner sont de même type et qu'il faut simplement pouvoir dire quel est le successeur de chaque nœud alors on a :
Ce qu'il faut que tu nous expliques, c'est ce que tu veux faire après : faire la liste des descendants, des ascendants ?Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class ObjetNoeud { public ObjetNoeud() { } public ObjetNoeud getSuccesseur() { return successeur; } public void setSuccesseur(ObjetNoeud successeur) { this.successeur = successeur; } private ObjetNoeud successeur; }
<Joke>
Je trouve l'appellation "Spaghetti" tout à fait inappropriée. Je n'ai jamais vu un Spaghetti avoir des ascendants et des descendants.
</Joke>
j'ai pensé à une implémentation comme celle-ci
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 public class Arbre { public Arbre succ; public Arbre [] pred; public static int Numniveau=0; public boolean feuille; public Arbre(int nb_niveaux) {int nb_pred=0;// doit recevoir un nb aleatoire succ=this; pred=new Arbre[nb_pred];// tableau d'objets arbre qui represente les predecesseurs feuille=false; initialiser(nb_niveaux); } public void initialiser(int nb_niveaux) {Numniveau++; if (Numniveau < nb_niveaux) {int k=0;//nombre aleatoire for (int i = 0; i < k; i++) {pred[i] = new Arbre(nb_niveaux);} } else { feuille = true; } } }
je me demande est ce que c'est suffisant ou je dois creer deux classes distinctes une classe noeud et une classe arbre.
je suis débutante en java
et comment puis je distinguer ma racine?
Pour un Arbre, il y a une ou plusieurs racines.Citation:
et comment puis je distinguer ma racine
Tu dois ajouter une méthode qui renvoie le tableau pred pour pouvoir parcourir les racines
j'ai une seule racine qui n'a aucun successeur et un tableau de predecesseurs.
mon arbre commence par des feuilles et se termine par une seule racine.
j'ajoute un attribut dans la classe arbre comme suit?
Code:
1
2public Arbre racine;
J'ai du confondre Feuilles et Racines !
(pourtant je cuisine bien d'habitude)
Je crois qu'il vaut mieux ne pas mettre dans le même code le stockage des objets dans un tableau et les objets eux-mêmes.
Tu devrais avoir une classe ObjetNoeud comme décrit dans un de mes posts précédents
et stocker ces différents objets dans un ArrayList ou un tableau au fur et à mesure de leur création.
bonjour,
je voulais savoir comment utiliser contains() pour vector?
et son type de retour est boolean???
Je pense que ceci n'a rien à voir avec le sujet initial.
Il faut faire un nouveau post dans ce cas.
Vector est une classe "dépréciée". Il faut éviter son usage.
Regarde plutôt dans la classe ArrayList
j'ai definis mon arbre de cette maniere mais je ne sais paa ou est ma faute
:cry:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public class Arbre { public Arbre succ; public Arbre [] pred; public static int Numniveau;//niveau du noeud public int val;//le nom de la tache qui est 1 ou 2 ou 3 public int poids=0; public boolean feuille;//si le noeud courent est feuille alors feuille =true sinn false //une feuille est un noeud qui ne posséde aucun predecesseur public Arbre() {succ=null; val=1; Numniveau=1; feuille=false; } int k=1; public void generate(Arbre racine,int nb_pred_max,int nb_niveaux)//nb_pred_max c'est le nombre max de predecesseurs d'un noeud donné en parametre { if (racine.Numniveau<nb_niveaux) { int n=(int) (Math.random() * nb_pred_max + 1); racine.pred=new Arbre[n]; for(int i=0;i<racine.pred.length;i++) {k++;//pour assurer l'obtention de taches distinctes racine.pred[i]=new Arbre(); racine.pred[i].Numniveau=racine.Numniveau+1; racine.pred[i].succ=racine; racine.pred[i].val=k; generate(racine.pred[i],nb_pred_max,nb_niveaux); } } else racine.feuille=true; }