- 문제
- tree를 작성하는 함수에서 임의로 작성된 tree를 DFS하는 함수를 작성
- 순서대로 저장된 벨류값을 담은 배열을 리턴할 것
- 시도
- value를 탐색해서 빈 배열에 담아주고 리턴하기로 하고
- 처음 시작하는 루트의 벨류를 빈 배열에 담아주고 시작하자
- 이프문으로 분기를 정하고 재귀를 돌리려고 했음
- 칠드런이 있으면 벨류를 찾아서 담고, 없을 때까지
- 문제는 중복되는 값을 베재할 방법을 못 떠올림
- 그러던중 forEach가 떠오름, 배열에서만 작동 가능, 칠드런은 배열임
- 수도코드
let dfs = function (node) {
let result = [];
result.push(node.value)
node.children.forEach(el => {
result.push(...dfs(el))
})
return result
};
let Node = function (value) {
this.value = value;
this.children = [];
};
Node.prototype.addChild = function (child) {
this.children.push(child);
return child;
};
- 레퍼런스
let dfs = function (node) {
let values = [node.value];
node.children.forEach((n) => {
values = values.concat(dfs(n));
});
return values;
};