【发布时间】:2016-12-19 17:57:23
【问题描述】:
假设我有一个类代表一个朋友,另一个类代表最好的朋友对和最好的朋友对的列表,并且想知道与每个人的最好朋友间接相关的每个朋友,如下所示:
class Friend
{
string Name;
}
class BestFriends
{
Friend NameFriend1;
Friend NameFriend2;
}
List<BestFriends> ListOfBestFriends = new List<BestFriends>();
假设我有如下 BestFriends 对:
- 亚当和布赖恩;
- 布赖恩和克里斯;
- 克里斯和丹尼尔;
- 埃迪和伊恩;
- 布赖恩和约翰。
我想创建一个方法来返回与某个特定朋友间接相关的所有朋友的列表。例如:如果我想要 Brian 的所有间接朋友,该方法将返回 { Adam, Chris, Daniel, John }。
List<Friend> IndirectFriends (Friend friendToHasItsIndirectFriendsFound, List<BestFriends> bestFriendsPairs)
{
...
}
我该怎么做?
【问题讨论】:
-
您的措辞具有误导性。您不是在搜索相关类,而是在搜索同一类的相关对象(在您的情况下为
Friend)。鉴于此,我不明白您的IndirectFriends方法中第一个参数的含义。我猜是你想要间接朋友的Friend?你如何定义“间接朋友”?您的递归有任何深度,还是仅从朋友最好的朋友开始的第一级才能找到间接关系?请澄清。提示:阅读图表。 -
我认为您实际上需要一个图遍历算法,这可能超出了 Stack Overflow 答案的范围。
-
@K.Berger
Friend参数是我要查找所有间接相关朋友的朋友。 “间接朋友”是指可以间接连接到Friend参数的所有级别的所有朋友(查看我的示例)。我想我应该使用graph transversal,但我以前从未使用过。
标签: c# list recursion graph-traversal