我有一个这样的数据结构
private String name;
private ArrayList children;
private String parent="";
public Node(String name) {
setName(name);
children = new ArrayList();
}
在程序的其他地方,我有一个名为“根”的节点,它包含一个完整的树数据结构。
从概念上看是这样的
root
/ \
/ \
node1 node2
/ \
/ \
node2 node3
/
/
node3
如您所见,节点可以具有相同的名称。这是故意的。我想为每个节点创建一个包含自己名字的字符串,加上它的沿袭并将它们存储在一个向量中。
所以左手边的节点3是
"root|node1|node2|node3"
RHS上的节点3是
"root|node2|node3"
节点1将是
"root|node1"
等。
我有一种方法可以遍历节点结构来打印每个节点,但是我发现很难设置每个父节点,例如,我无法找到一种方法来完成它。任何帮助都是美妙的,因为我迄今所做的一切都失败了。一个重要的注意事项是树不一定是二叉树,我只是用它作为一个例子。
这是我用来打印树的每个节点的代码。希望它会很容易调整。
public void print() {
LinkedList open = new LinkedList();
LinkedList closed = new LinkedList();
open.add(this);
while(!open.isEmpty()) {
Node currentNode = open.removeFirst();
System.out.println(currentNode.getName());
ArrayList children = currentNode.getChildren();
closed.add(currentNode);
for(int i = 0; i < children.size(); i++) {
Node current = children.get(i);
open.addLast(current);
}
}
}
谢谢大家。