summaryrefslogtreecommitdiff
path: root/perllib/Graph/Traversal/BFS.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/Graph/Traversal/BFS.pm')
-rw-r--r--perllib/Graph/Traversal/BFS.pm59
1 files changed, 59 insertions, 0 deletions
diff --git a/perllib/Graph/Traversal/BFS.pm b/perllib/Graph/Traversal/BFS.pm
new file mode 100644
index 00000000..2678f72e
--- /dev/null
+++ b/perllib/Graph/Traversal/BFS.pm
@@ -0,0 +1,59 @@
+package Graph::Traversal::BFS;
+
+use strict;
+
+use Graph::Traversal;
+use base 'Graph::Traversal';
+
+sub current {
+ my $self = shift;
+ $self->{ order }->[ 0 ];
+}
+
+sub see {
+ my $self = shift;
+ shift @{ $self->{ order } };
+}
+
+*bfs = \&Graph::Traversal::postorder;
+
+1;
+__END__
+=pod
+
+=head1 NAME
+
+Graph::Traversal::BFS - breadth-first traversal of graphs
+
+=head1 SYNOPSIS
+
+ use Graph;
+ my $g = Graph->new;
+ $g->add_edge(...);
+ use Graph::Traversal::BFS;
+ my $b = Graph::Traversal::BFS->new(%opt);
+ $b->bfs; # Do the traversal.
+
+=head1 DESCRIPTION
+
+With this class one can traverse a Graph in breadth-first order.
+
+The callback parameters %opt are explained in L<Graph::Traversal>.
+
+=head2 Methods
+
+The following methods are available:
+
+=over 4
+
+=item dfs
+
+Traverse the graph in depth-first order.
+
+=back
+
+=head1 SEE ALSO
+
+L<Graph::Traversal>, L<Graph::Traversal::DFS>, L<Graph>.
+
+=cut