![]() |
AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
|
Iterative implementation of DFS. More...
Public Member Functions | |
IterativeDFS1 (MyGraph g) | |
String | name () |
get traversal name More... | |
void | start (MyNode s0) |
start traversal at node s0 More... | |
![]() | |
Traversal (MyGraph g) | |
initiate traversal of g More... | |
abstract String | name () |
get traversal name More... | |
abstract void | start (MyNode s0) |
start traversal at node s0 More... | |
void | showMark (MyNode node) |
callback to give visual feedback on marking a node More... | |
Additional Inherited Members | |
![]() | |
SingleStepper | singlestepper = null |
may halt if single stepper was set More... | |
int | nsteps = 1 |
halt every nsteps steps in time_ More... | |
int | verbose = 0 |
set verbosity (extra output if >0) More... | |
![]() | |
void | initialize () |
initialize graph for traversal (reset all attributes), provided for convenience to be called by start More... | |
![]() | |
MyGraph | g_ = null |
int | time_ = 0 |
Iterative implementation of DFS.
Traversal like DepthFirstSearch
but order of processed edges differs. We use a second stack to keep track of the parent node in the spanning tree. (This could be solved differently. Note, however, that we have to transfer the "complete state" near push.)
In contrast to IterativeDFS2
, nodes are marked only when they are popped off the stack. This simulates the recursive DepthFirstSearch
best, but allows to the stack size to grow beyond the number of nodes!
Definition at line 17 of file IterativeDFS1.java.
Definition at line 19 of file IterativeDFS1.java.
String aud.example.graph.IterativeDFS1.name | ( | ) |
get traversal name
Reimplemented from aud.example.graph.Traversal.
Definition at line 23 of file IterativeDFS1.java.
void aud.example.graph.IterativeDFS1.start | ( | MyNode | s0 | ) |
start traversal at node s0
Reimplemented from aud.example.graph.Traversal.
Definition at line 25 of file IterativeDFS1.java.
References aud.example.graph.MyNode.d, aud.example.graph.Traversal.g_, aud.graph.GraphAM< Node extends AbstractNode, Edge extends AbstractEdge >.getEdge(), aud.graph.SimpleEdge.getWeight(), aud.graph.AbstractEdge.hasWeight(), aud.example.graph.Traversal.initialize(), aud.Stack< T >.is_empty(), aud.example.graph.MyNode.ord, aud.example.graph.MyNode.p, aud.Stack< T >.pop(), aud.Stack< T >.push(), aud.example.graph.Traversal.showMark(), aud.adt.AbstractStack< T >.toString(), and aud.example.graph.Traversal.verbose.