문제 설명:
임의의 tree를 구성하는 노드 중 하나의 Node 객체를 입력받아, 해당 노드를 시작으로 깊이 우선 탐색(DFS, Depth First Search)을 합니다. 이 때, 탐색되는 순서대로 노드의 값이 저장된 배열을 리턴해야 합니다.
입력 : node
출력
주의사항
입출력 예시
let root = new Node(1);
let rootChild1 = root.addChild(new Node(2));
let rootChild2 = root.addChild(new Node(3));
let leaf1 = rootChild1.addChild(new Node(4));
let leaf2 = rootChild1.addChild(new Node(5));
let output = dfs(root);
console.log(output); // --> [1, 2, 4, 5, 3]
leaf1.addChild(new Node(6));
rootChild2.addChild(new Node(7));
output = dfs(root);
console.log(output); // --> [1, 2, 4, 6, 5, 3, 7]
풀이 코드 설명
let dfs = function (node) {
values에 node의 밸류를 저장
let values = [node.value];
//노드의 자식들을 forEach로 순회
node.children.forEach((n) => {
values = values.concat(dfs(n));
});
//values 배열을 리턴하기
return values;
};
let Node = function (value) {
this.value = value;
this.children = [];
};
// membership check(중복 확인)를 따로 하지 않습니다.
Node.prototype.addChild = function (child) {
this.children.push(child);
return child;
};
JavaScript Algorithm - power, 거듭제곱 (0) | 2023.01.12 |
---|---|
JavaScript Algorithm - largestProductOfThree (0) | 2023.01.11 |
JavaScript Algorithm - sudoku (2) | 2023.01.06 |
JavaScript Algorithm - tiling (0) | 2023.01.05 |
알고리즘 문제풀이 toy - bubbleSort (0) | 2023.01.04 |