Pages : 1
#1 Le 22/03/2006, à 08:33
- Premium
[Java]Arbre n-aire
Bonjour,
j'ai codé différentes méthodes pour des arbres n-aires.
J'aurais d'aide besoin pour l'écriture d'une méthode traverse qui renvoie la liste des noeuds(List<Node>) en ordre préfixe
Merci
Node correspond a une classe astraite qui est utilisée pour savoir si on est dans le cas d'une feuille ou d'un noeud(ayant un ou plusieurs fils)
public abstract class Node {
private final int data;
....//methode que j'ai écrit
}
public class Leaf extends Node{
...
}
public class InternalNode extends Node{
private final List<Node> children;
...
}
La fonction traverse a été écrite de cette manière mais je n'ai pas le sommet de mon arbre
public List<Node> traverse(){
return root.traverse();
}
Dernière modification par Premium (Le 22/03/2006, à 12:36)
Hors ligne
#2 Le 23/03/2006, à 16:01
- amadeus
Re : [Java]Arbre n-aire
Bonjour
Pas sûr d'avoir bien compris... tu cherche un algorithme?
Dumbledore returns from the dead and declares it to be hammertime, Harry proceeds to break it down, Voldemort is unable to touch this.
Hors ligne
#3 Le 24/03/2006, à 00:50
- Soulfly_tribe90
Re : [Java]Arbre n-aire
Ca me rappelle un td que j'ai fait y a pas tres longtps en Java
Hors ligne
#4 Le 24/03/2006, à 11:57
- zeugme
Re : [Java]Arbre n-aire
Ce que je vois, c'est que etant donne un noeud, tu peut pas savoir ou se trouve la racine.
C'est impossible tel que tu implemente Noeud.
Il manque un attribut parent de type Noeud.
Pour avoir la racine tu remonte via parent jusqu'a ce que parent == null.
Le nommage de tes classes est etrange.
En fait, Noeud n'est pas un noeud, c'est une donnee.
InternalNode est un noeud par contre.
J'aurais plutot fait Leaf, Node extends Leaf. et ensuite une autre classe Data.
Naturellement, Leaf (et donc Node par heritage) ont un attribut de type Data.
En UML texte, ca donne :
Leaf -> Data
^
|
Node
Ah oui, aussi : Collection est plus abstrait que List.
Donc a privilegier.
Enfin, grace a Java 5, tu peut typer tes collections :
Collection<Node> children = new ArrayList<Node>();
Si tu doit faire des trucs avec des threads, attention, ArrayList n'est pas thread safe.
Dernière modification par jbb (Le 24/03/2006, à 12:00)
Hors ligne
Pages : 1