package main
import "fmt"
type GraphMap map[string][]string
func main() {
var graphMap GraphMap = make(GraphMap)
graphMap["you"] = []string{"alice","bob","claire"} // 一级关系朋友圈
graphMap["bob"] = []string{"anui","peggy"}
graphMap["alice"] = []string{"peggy"}
graphMap["claire"] = []string{"tom","johnny"}
graphMap["anuj"] = []string{}
graphMap["peggy"] = []string{}
graphMap["tom"] = []string{}
graphMap["johnny"] = []string{}
search_query := graphMap["you"] //把自己主数组当一个队列
for {
if len(search_query) > 0{
var person string //取出第一个
person,search_query = search_query[0],search_query[1:] // 把队列当中的第一个元素取出 剩下的元素在赋值给原队列
if personIsTom(person){
fmt.Printf("%s is the man",person)
break
}else {
search_query = append(search_query,graphMap[person]...)
}
}else{
fmt.Println("Not Found")
break
}
}
}
func personIsTom(p string) bool {
return p == "tom"
}
Go实现广度优先搜索
最新推荐文章于 2023-06-06 15:23:14 发布