У меня есть задание, в котором я должен написать метод, который выполняет ДПФ ориентированного графа.Вот направленные ребра:
Узел 1 -> Узел 2, Узел 3
Узел 2 -> Узел 4
Узел 3 -> Узел 5
Узел 4 -> Узел 5
Из моего пониманияпосле просмотра этого видео выполнение ДПФ приведенного выше графика, начиная с узла 1, приведет к выводу 1, 2, 4, 5, 3. Я считаю, что при рассмотрении ребер 1, 2 естественнопредшествует 3, а затем линейно прогрессирует, пока не достигнет 5. Поскольку 5 не имеет никаких других ребер, кроме соединения с 4, обход «раскручивается» обратно к узлу 1, после чего выводится узел 3.
Тем не менее, присваивание ожидает выхода 1, 3, 5, 4, 2. Где проблема в моей логике?
РЕДАКТИРОВАТЬ: я не уверен, какую часть назначения я неправильно понял, но решение состояло в том, что после печати первого элемента, обход узла добавляет его в стек, но ожидаемый результат - порядок, в котором элементыпокинуть стекПеремещаясь по графику, вы начинаете с узла 1 и вначале переходите к узлу 2 (потому что назначение требует выбора между узлами в их естественном порядке), добавляя узел 2 в стек.Затем вы продолжаете обход узлов, к которым ведет узел 2, приводя ваш стек к 2, 4, 5. Затем, возвращаясь к выбору между 2 и 3, вы добавляете 3 к стеку, выскакиваете из каждого элемента стека и выводитеих, как вы идете.Таким образом, сначала печатается 1, затем выталкивая элементы стека, вы получаете 3, 5, 4, 2.