Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#1 Le 22/03/2006, à 09: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, à 13:36)

Hors ligne

#2 Le 23/03/2006, à 17: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, à 01:50

Soulfly_tribe90

Re : [Java]Arbre n-aire

Ca me rappelle un td que j'ai fait y a pas tres longtps en Java big_smile

Hors ligne

#4 Le 24/03/2006, à 12: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, à 13:00)

Hors ligne

Haut de page ↑