-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbreadth-first-search.js
45 lines (39 loc) · 1.06 KB
/
breadth-first-search.js
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
const isFriend = (person) => (
person === "xico"
);
const pushElements = (stackToInsert, array) => {
array.forEach(element => stackToInsert.push(element))
};
const stackSearch = (stack, grafo) => {
const checked = [];
while (stack.length > 0) {
const person = stack.shift();
if (!checked.includes(person)) {
if (isFriend(person)) {
return true;
}
pushElements(stack, grafo[person]);
checked.push(person);
}
}
return false;
};
const grafo = {};
grafo["kevin"] = ["webster", "gustavo", "vinicius"];
grafo["webster"] = ["xico", "renan"];
grafo["gustavo"] = ["mi"];
grafo["vinicius"] = ["gabriel"];
grafo["xico"] = [];
grafo["renan"] = [];
grafo["mi"] = [];
grafo["gabriel"] = [];
const stack = [];
pushElements(stack, grafo["kevin"]);
console.log(stackSearch(stack, grafo));
const grafo2 = {};
grafo2["kevin"] = ["kauan"];
grafo2["kauan"] = ["lucas"];
grafo2["lucas"] = [];
const stack2 = [];
pushElements(stack2, grafo2["kevin"]);
console.log(stackSearch(stack2, grafo2));