Simple go package providing breadth-first search functions for arbitrary structs
package main
import (
"fmt"
"github.com/bcicen/bfstree"
)
type FlightRoute struct {
id int
fromCity string
toCity string
}
// FlightRoute implements the bfstree.Edge interface
func (f FlightRoute) From() string { return f.fromCity }
func (f FlightRoute) To() string { return f.toCity }
func main() {
tree := bfstree.New(
FlightRoute{0, "New York", "Chicago"},
FlightRoute{1, "New York", "Los Angeles"},
FlightRoute{2, "Los Angeles", "Houston"},
FlightRoute{3, "Chicago", "Tokyo"},
)
path, err := tree.FindPath("New York", "Tokyo")
if err != nil {
panic(err)
}
fmt.Println(path)
for n, edge := range path.Edges() {
fmt.Printf("flight %d: %s -> %s\n", n+1, edge.From(), edge.To())
}
}
output:
New York->Chicago->Tokyo
flight 1: New York -> Chicago
flight 2: Chicago -> Tokyo