У меня есть структура данных, которая выглядит как этотРазбор узлов в структуре Java дерево в векторе строк
private String name;
private ArrayList<Node> children;
private String parent="";
public Node(String name) {
setName(name);
children = new ArrayList<Node>();
}
В другом месте в моей программе, я узел называется «корень», который содержит всю структуру дерева данных ,
Концептуально это выглядит как этот
root
/ \
/ \
node1 node2
/ \
/ \
node2 node3
/
/
node3
Как вы можете видеть, узлы могут иметь такое же имя. Это предназначено. Я хочу создать строку для каждого узла, который содержит свое имя, плюс его линия и сохранить их в векторе.
такой узел 3 на левой стороне будет "root|node1|node2|node3"
node3 на RHS будут "root|node2|node3"
узел1 бы "root|node1"
т.д.
У меня есть способ итерации по структуре узла для печати каждого узла, но я «Мне трудно установить каждого родителя, как в, я не могу понять, как это сделать. Любая помощь будет фантастической, поскольку все, что я пробовал до сих пор, не удалось. Важно отметить, что дерево не обязательно является двоичным деревом, я просто использую его для примера.
Вот код, который я использую для печати каждого узла дерева. Надеюсь, это будет легко настроить.
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);
}
}
}
Спасибо, ребята.
предположил, что я не смотрю на новый способ печати. Я хочу добавить родителей для каждого узла. – larjudge
извините за это. Я отредактировал свой ответ, чтобы ответить на вопрос. – CVAUGHN