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,或任何值,谢谢!这件事太简单了,我不明白为什么我自己没有看到它。:)