我正在检索并从外部源复制大量的文件夹对象。它们都有文件夹ID和父文件夹ID,但不是树形结构。检索它们之后,我将它们组织在具有顶部根的树节点对象中。但是,一个或多个文件夹会创建一个循环引用,我无法弄清楚如何确定位置。
创建循环引用时,Java不会抛出任何错误。当我尝试将其编码为json格式,然后将其发送到Web应用程序的客户端之前,该错误来自stackoverflow错误。因为错误首先对我来说是可见的,所以我根本看不出哪个对象是错误的原因。
在这个特殊问题中,我处于失败的策略之中。是否有任何标准化或好的方法来识别循环对象引用,就像我的情况一样?
答案 0 :(得分:3)
添加"访问过" boolean标志到节点类,初始化为false。遍历树。如果在给定节点上,当您到达时标志为真,那么您已检测到循环。否则将标志设置为true并继续遍历树。不使用您使用的遍历顺序(pre = post或in-order)。