Как на графе, выделить все вершины в заданном радиусе
Добавлено: 17 апр 2020, 13:53
Как на графе, выделить все вершины в заданном радиусе?
Попробовал прикинуть так, но гдет ошибаюсь в логике, потому что бывает в одну сторону 4 вершины обходит в другую 3
Может кто знает не рекурсивный способ для таких маневров?
[SerializeField] List<NodeGraph> used = new List<NodeGraph>();
private void Build(NodeGraph node, int och )
{
if (used.Find(x => x == node) != null)
{
return;
}
if (och == 4) { return; }
och++;
used.Add(node);
for (int i = 0; i < node.conectedNodes.Count; i++)
{
if (node.conectedNodes[i] != node) { Build(node.conectedNodes[i], och); }
}
}
Попробовал прикинуть так, но гдет ошибаюсь в логике, потому что бывает в одну сторону 4 вершины обходит в другую 3
Может кто знает не рекурсивный способ для таких маневров?
Синтаксис:
Используется csharp
[SerializeField] List<NodeGraph> used = new List<NodeGraph>();
private void Build(NodeGraph node, int och )
{
if (used.Find(x => x == node) != null)
{
return;
}
if (och == 4) { return; }
och++;
used.Add(node);
for (int i = 0; i < node.conectedNodes.Count; i++)
{
if (node.conectedNodes[i] != node) { Build(node.conectedNodes[i], och); }
}
}