不知道如何解决一个可能无限循环(树)

时间:2013-07-31 07:23:03

标签: plsql plsqldeveloper

我有一个问题。 我有一个元素和另一个元素列表,它们以某种方式连接到第一个元素。 我想检查,列表中的哪些元素是第一个的子元素。将结果保存在数组中。然后我会挑选第一个孩子并寻找他的孩子。保存等等等等。 问题是,我不知道确切的关系数量。所以我可以有很多循环和搜索。 我需要对每个循环和数组进行编程(保存到)还是有更好的方法?

编辑: 我在谈论数据库表。我有两张桌子。我想检查table1中每个元素的子节点(table2中的数据)。所以我从table1中的Loop开始。表1和表2中的元素与坐标xy连接。所以iam搜索table2中table1_element1.xy == table2.xy的所有元素。结果可能有n个孩子。现在我想保存它们并为这些孩子开始一个新的循环,根据坐标为他的孩子找到每个孩子。保存这个新结果一个又一个。 更清楚?

谢谢。

2 个答案:

答案 0 :(得分:1)

这个问题可以通过递归来轻松解决。

在这种情况下,您的终止条件将是任何节点在列表中没有任何关系,或者当您到达存储孩子的列表末尾时。

由于

答案 1 :(得分:0)

虽然问题有点模糊,而不是编写每个单独的循环,但更优雅的写作方式是通过递归。你可以设置你的休息条件,当你找到一个孩子时(如果我正确地理解了这个问题)没有关系。

至于存储问题,听起来您可能想要使用某种形式的拓扑数据结构,其中每个节点将保存通过您的关系连接到它的所有节点的列表。

希望这有帮助。