private void ChainDeeper(Node firstNode, Node secondNode) { ElementsChain chain = new ElementsChain(); chain.AddNode(firstNode); // Добавляем текущую ноду в цепь chain.AddNode(secondNode); // Добавляем предыдущую ноду в цепь Node currentNode = secondNode; Node prevNode = firstNode; while (currentNode.Connections.Count < 3) { if (currentNode.Connections.Count < 2) // Тупик { return; } Node nextNode = currentNode.Connections.Keys.FirstOrDefault(i => i != prevNode); prevNode = currentNode; // Переходим на следующую currentNode = nextNode; chain.AddNode(currentNode); // Записываем ноду в цепь } if (Chains.FirstOrDefault(i => i.Nodes.First() == chain.Nodes.Last() && i.Nodes.Last() == chain.Nodes.First()) == null) // Проверка на существующий путь { Chains.Add(chain); // Добавляем цепь в список цепей } }