Java 如何从具有循环关系的数据集生成树?
我有一门课是这样的:Java 如何从具有循环关系的数据集生成树?,java,tree,cyclic,Java,Tree,Cyclic,我有一门课是这样的: class Foo { public String name = ""; public ArrayList<Foo> children = new ArrayList<Foo>(); } ObjA ObjB ObjC ObjD ObjB ObjA 我该怎么做?它不需要很快或任何东西,这个树主要是为了确保我的程序的结果。Foo需要一个print方法来打印它的内容,然后调用它所指向的Foo的print方法Pri
class Foo {
public String name = "";
public ArrayList<Foo> children = new ArrayList<Foo>();
}
ObjA
ObjB
ObjC
ObjD
ObjB
ObjA
我该怎么做?它不需要很快或任何东西,这个树主要是为了确保我的程序的结果。
Foo
需要一个print
方法来打印它的内容,然后调用它所指向的Foo
的print
方法Print
采用包含所有已遍历的Foo
对象的。如果next
处于visitored
中,则它是一个周期的一部分,您不调用它的print
方法
class Foo {
Foo next;
void print(HashSet<Foo> visited) {
System.out.println("this Foo's ID or whatever it is you're printing");
visited.add(this);
if(next != null && !visited.contains(next)) {
next.print(visited);
}
}
}
class-Foo{
富下;
无效打印(已访问哈希集){
System.out.println(“这个Foo的ID或者你正在打印的任何东西”);
已访问。添加(此);
if(next!=null&&!visted.contains(next)){
下一步。打印(已访问);
}
}
}
您可能还想传入一个确定缩进级别的
int
参数-如果indent
等于4,则在System.out.println
之前打印4个空格,并在调用next
上的print
时,将缩进增加2或4,或任何值,谢谢!这件事太简单了,我不明白为什么我自己没有看到它。:)