Donc ton algo doit ressemblé à cela :
1. Découper ton String en bloque correspondant aux niveaux de l'arbre.
"a b c|d" => { "a", "b", "c|d"}
2. Découper un niveau en ses nodes constituant
"a" => {"a"}
"c|d"=> {"c","d"}
3. Crée les nodes du niveaux courant dans chaque node du niveau précédent.
Je te propose d'avoir 3 méthodes de base :
1 2 3 4
| public String[] splitTreeToLevels(String tree);
public String[] splitLevelToNodes(Strong level);
public List<Node> creetNodes(String[] nodes, List<Node> parents);
// retourne la liste des Nodes crée => on vise la récusivité |
L'algo général aurai donc la tête suivante :
1 2 3 4 5 6 7 8 9 10 11
| public List<Node> buildTree(String pattern) {
List<Node> previousLevel = new ArrayList<Node>();
Node root = new Node("root");
previousLevel.add(root);
String levels = splitTreeToLevels(pattern);
for (String level : levels) {
String nodes = splitLevelToNodes(level);
previousLevel = creetNodes(nodes, previousLevel);
}
return root;
} |
Cordialement,
Patrick Kolodziejczyk
Partager