Синтаксис:
Используется csharp
List<NodeGraph> GetNodesInRadius(NodeGraph startNode, int radius)
{
List<NodeGraph> inRadiusResult = new List<NodeGraph>();
List<NodeGraph> used = new List<NodeGraph>();
Queue<NodeGraph> q = new Queue<NodeGraph>();
q.Enqueue(startNode);
used.Add(startNode);
startNode.d = 0;
while (q.Count > 0)
{
NodeGraph e = q.Dequeue();
if (e.d == radius+1) break;
if (e.d == radius) inRadiusResult.Add(e); //убрать if, если нужны все вершины в радиусе
for (int i = 0; i < e.conectedNodes.Count; i++)
{
if (!used.Contains(e.conectedNodes[i]))
{
e.conectedNodes[i].d = e.d + 1;
q.Enqueue(e.conectedNodes[i]);
used.Add(e.conectedNodes[i]);
}
}
}
return inRadiusResult;
}
{
List<NodeGraph> inRadiusResult = new List<NodeGraph>();
List<NodeGraph> used = new List<NodeGraph>();
Queue<NodeGraph> q = new Queue<NodeGraph>();
q.Enqueue(startNode);
used.Add(startNode);
startNode.d = 0;
while (q.Count > 0)
{
NodeGraph e = q.Dequeue();
if (e.d == radius+1) break;
if (e.d == radius) inRadiusResult.Add(e); //убрать if, если нужны все вершины в радиусе
for (int i = 0; i < e.conectedNodes.Count; i++)
{
if (!used.Contains(e.conectedNodes[i]))
{
e.conectedNodes[i].d = e.d + 1;
q.Enqueue(e.conectedNodes[i]);
used.Add(e.conectedNodes[i]);
}
}
}
return inRadiusResult;
}