-1

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

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

谢谢你。

4

2 回答 2

1

借助递归可以轻松解决此问题。

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

谢谢

于 2013-07-31T07:34:43.117 回答
0

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

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

希望这可以帮助。

于 2013-07-31T07:44:15.953 回答