//BFS let storage = []; let queue = []; function recursion(node) { try { for (let el of node.friends) { // 친구1의 친구들로 for문 ---2 // 친구2의 친구들로 for문 ---3 if (queue.indexOf(el) === -1) queue.push(el); // 친구1의 친구들을 큐에 푸시, 현재 큐 : [친구2, 친구1-1, 친구1-2] // 친구2의 친구들을 큐에 푸시, 현재 큐 : [친구1-1, 친구1-2, 친구2-1, 친구2-2] } let pop = queue.shift(); storage.push(pop); // 현재 큐에 [친구1, 친구2] -- 1 return recursion(pop); // 친구1로 recursion ----1 //친구2로 recursion ----2 // 이렇게 계속 BFS } catch (e) {} }
let stack = []; function recursion(node) { try { // 제공 받은 노드의 친구들을 스택에 넣고 // 쌓은 스택의 맨 끝에 있는 것을 pop(FILO) // 그 맨끝에 있는 노드의 친구들을 스택에 넣고 // 다시 쌓은 스택의 맨 끝에 있는 것을 pop ..... for (let el of node.friends) { if (stack.indexOf(el) === -1) stack.push(el); } let pop = stack.pop(); return recursion(pop); } catch (e) {}; }DFS는 다시 도전해봐야할 것 같다..ㅎㅎ