将获取附加到特定节点的所有节点的算法

时间:2010-04-19 01:47:46

标签: algorithm graph

我正在创建一个基于有向图的算法。我想要一个能够获取连接到特定节点的所有节点的函数。

public List<Node> GetNodesInRange(Graph graph, int Range, Node selected)
{
    var result = new List<Node>();
    result.Add(selected);
    if (Range > 0)
    {
        foreach (Node neighbour in GetNeighbours(graph, selected))
        {
            result.AddRange(GetNodesInRange(graph, Range - 1, neighbour));
        }
    }
    return result;
}

private List<Node> GetNeighbours(Graph graph, Node selected)
{
    foreach(Node node in graph.node)
    {
        if (node == selected)
        {
            GetNodesInRange(node, Range-1, /*don't know what 2 do here*/);
            //and confused all the way down

2 个答案:

答案 0 :(得分:2)

这取决于您对图表使用的实现方式:

  • 边缘列表:搜索具有指定顶点的所有边作为边的第一个或第二个参数
  • 邻接列表:附加到节点的列表已经是发生事件的节点列表
  • 邻接矩阵:您选择所选顶点的列(或行)

答案 1 :(得分:0)

您在GetNodesInRange内拨打GetNeighbours,在GetNeighbours内拨打GetNodesInRange,这就产生了问题。

通过Jack查看答案。

如果您发布GraphNodeEdge的样子,那么我们将能够提供更多帮助。