-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbfs_algorithm.go
More file actions
46 lines (37 loc) · 946 Bytes
/
Copy pathbfs_algorithm.go
File metadata and controls
46 lines (37 loc) · 946 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package main
import (
"fmt"
"github.com/gammazero/deque"
)
func main() {
tree := makeTree()
visited := make(map[string]int)
var q deque.Deque
addDequ(tree, "dima", &q)
for q.Len() != 0 {
friendName := q.PopFront().(string)
if _, ok := visited[friendName]; ok != true {
visited[friendName] = 1
if friendName == "artem" {
fmt.Println(friendName, "found!!!")
} else {
fmt.Println(friendName, "is not artem")
addDequ(tree, friendName, &q)
}
}
}
}
func addDequ(tree map[string][]string, friendName string, q *deque.Deque) {
for _, name := range tree[friendName] {
q.PushBack(name)
}
}
func makeTree() map[string][]string {
tree := make(map[string][]string)
tree["dima"] = []string{"alex", "andrey", "banan", "misha", "kristina"}
tree["kristina"] = []string{"yulia"}
tree["misha"] = []string{"ksusha"}
tree["banan"] = []string{"artem", "tanya"}
tree["andrey"] = []string{"artem"}
return tree
}