J'ai une structure de données qui ressemble à cecinœuds Parse dans une structure arborescente Java vecteur de chaînes
private String name;
private ArrayList<Node> children;
private String parent="";
public Node(String name) {
setName(name);
children = new ArrayList<Node>();
}
Ailleurs dans mon programme, j'ai un nœud appelé « racine » qui contient une structure de données d'arbre entier .
Conceptuellement, il ressemble à ceci
root
/ \
/ \
node1 node2
/ \
/ \
node2 node3
/
/
node3
Comme vous pouvez le voir nœuds peuvent avoir le même nom. C'est prévu. Je veux créer une chaîne pour chaque noeud qui contient son propre nom, plus son lignage et les stocker dans un vecteur.
donc noeud 3 sur le côté gauche serait "root|node1|node2|node3"
la node3 sur les rhs serait "root|node2|node3"
node1 serait "root|node1"
etc.
J'ai un moyen de parcourir la structure de noeud pour imprimer chaque noeud, mais je Je trouve difficile de définir tous les parents, car je n'arrive pas à trouver un moyen de le faire. Toute aide serait fantastique car tout ce que j'ai essayé jusqu'ici a échoué. Une note importante est que l'arbre n'est pas nécessairement un arbre binaire, je l'utilise juste pour un exemple.
Voici le code que j'utilise pour imprimer chaque nœud de l'arbre. Espérons que ce sera facile à modifier.
public void print() {
LinkedList<Node> open = new LinkedList<Node>();
LinkedList<Node> closed = new LinkedList<Node>();
open.add(this);
while(!open.isEmpty()) {
Node currentNode = open.removeFirst();
System.out.println(currentNode.getName());
ArrayList<Node> children = currentNode.getChildren();
closed.add(currentNode);
for(int i = 0; i < children.size(); i++) {
Node current = children.get(i);
open.addLast(current);
}
}
}
Merci les gars.
Je ne suis pas à la recherche d'une nouvelle façon d'imprimer. Je veux ajouter des parents pour chaque noeud. – larjudge
désolé à ce sujet. J'ai édité ma réponse pour répondre à la question. – CVAUGHN