Обход всех путей, кроме тех, которые предшествуют данному начальному узлу в структуре графа.Javascript

Форум по Javascript
Ответить
Anonymous
 Обход всех путей, кроме тех, которые предшествуют данному начальному узлу в структуре графа.

Сообщение Anonymous »

Я пытаюсь пройти по графу, в котором узлы расположены слева направо (как и связи между узлами. Всегда потоки идут слева направо).
Вот визуализация график:
Изображение

Для любого узла В промежутках графа я хочу пройти по остальным узлам графа, начиная с этого узла, включая пути, ведущие к любому из последующих узлов.
Начальный узел может содержать только один входящий. Однако последующие узлы для запуска узлов могут иметь несколько входящих ссылок.
График имеет массив узлов, где каждый узел имеет следующий формат:

Код: Выделить всё

{
"id": 123
}
Каждая ссылка имеет следующий формат:

Код: Выделить всё

{
"id": 111,
"left": {
"id": 123,
},
"right": {
"id": 234,
},
}
Вот мой код:

Код: Выделить всё

traverseDownstream(graph, startNode) {
const links = graph.links;
const linksToUpdate = links.filter(link => link.left.id === startNode.id);
linksToUpdate.forEach(link => {
const rightNode = graph.nodes.find(
node => node.id === link.right.id
);
if (rightNode) {
rightNode.traversed = true;
this.traverseDownstream(graph, rightNode);
}
});
}
Код проходит через все правые узлы, но проблема в том, что когда я добавляю логику для обхода и левого, у меня возникают ошибки превышения стека вызовов. Как я могу сделать этот обход???


Подробнее здесь: https://stackoverflow.com/questions/793 ... aph-struct
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»