Bonjour à tous,

voici mon problème, j'ai un arbre du type:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
39
40
41
42
43
44
45
46
47
48
package arbre;
 
import java.util.*;
/**
 *
 * @author Tuxico
 */
public class Arbre {
    private int value;
    private Vector<Arbre> fils;
 
    public Arbre(int n){
        this.value = n;
        fils = new Vector<Arbre>();
    }
 
    public int getValue(){
        return this.value;
    }
 
    public void ajouteFils(Arbre t){
            if(!(this.fils.contains(t))){
                this.fils.add(t);
            }
    }
 
    public void setValue(int n){
        this.value = n;
    }
 
    public Arbre donneFils(int n){
        try{
            return this.fils.get(n);
        }catch(ArrayIndexOutOfBoundsException e){
            e.toString();
            return null;
        }
    }
 
    public int getFilsSize(){
        return this.fils.size();
    }
 
    public ArbreIterator elements(){
        return new ArbreIterator(this);
 
    }
}
Mon problème vient de la méthode elements() qui est censée retourner un itérateur sur l'arbre (donc renvoyer chaque valeur de chaque branche).

Je ne vois pas comment créer un itérateur pour ce type d'arbre étant donné que le nombre de fils peut varier de 0 à n et que chaque fils peut lui-même avoir 0 à n fils (un arbre quoi )

Je sais que je vais devoir utiliser la récursion mais je ne peux pas modifier l'en-tête de next() ou hasNext() sinon ça ne respecte pas les règles des interfaces.

D'où ma question, comment itérer sur un tel arbre?


merci.