Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi!
After reading the code of pre-traverse i thought that there was a problem and i think was able to find an example that proves it.
The problem i saw was that after visiting a node the algorithms was marking all of its successors as visited(it put them in the seen set), which is common for BFS but not DFS. Therefore if we take that example graph:
and start the traversal from :a, what the algorithm will do is actually:
So it produces the result (:a :e :d :b :c) which is incorrect.
I chose the names of the vertices specifically for this example in order to force the algorithm to go through the branches in this exact order, otherwise it could just go through the branch from :e, go to :d, backtrack to :a and then choose :c and then :b. In that case the result is (:a :e :d :c :b) which is correct but the :c vertex was not visited when it had to be.