que.push(this.root)
que = [
{"children": [
{"children": [], "value": 2},
{"children": [], "value": 3}
],
"value": 1}
]
// 1
//2 3
que.shift를 하면 배열 안에 있는 요소들이 다 나간다.
let bfs = function (node) {
let data = [];
let que = [];
que.push(node);
while(que.length){
cur = que.shift();
data.push(cur.value);
que.map(el => data.concat(que.push(el.children)))
}
return data;
};
첫번째 노드에 담긴 값만 나옴
let bfs = function (node) {
let data = [];
let que = [];
que.push(node);
while(que.length){
node = que.shift();
data.push(node.value);
if(node.children) que.push(node.children);
}
return data;
};
첫번째 노드에 담긴 값 + undefind 나옴...
보니까 que.shift()할때 값이 다 나감..;;
어떻게 방법이 없을까... 뭐가 잘못된걸까ㅠㅠ
강의들은대로 한거같은데.
강의를 한번 더 들어봐야겠다...
que[0].value = 1
que[0].children[0].value = 2
que[0].children[1].value = 3
que.map(el => el.children) //[Array(2)]
let bfs = function (node) {
let data = [];
let que = [node];
while(que.length){
const head = que[0]
que = que.slice(1);
data.push(head.value);
head.children.map(children => que.push(children))
}
return data;
};
let bfs = function (node) {
let data = [];
let que = [node];
while(que.length){
const head = que[0]
data.push(que[0].value);
que = que.slice(1);
head.children.map(children => que.push(children))
}
return data;let bfs = function (node) {
let data = [];
let que = [node];
while(que.length){
// const head = que[0]
data.push(que[0].value);
que = que.slice(1);
// data.push(head.value);
node[0].children.map(el => que.push(el))
// head.children.map(children => que.push(children))
}
return data;
};
};
이렇게 que[0]을 할당하지 않고 사용해보려고 data에 push하는 부분을 que재할당 부분 위에 넣어봤다. pass된다.. 근데 head를 쓴 이유가 있었으니
que에 재할당을 하면서 node를 줄여나가는데 맨 마지막줄에
head.children.map 부분에서 각각 que 재할당 부분과 node 전체 정보가 둘다 필요하기 때문...!! 마지막 head부분도 que[0]으로 바꾸면 children을 읽지 못한다. 왜냐면 que는 이미 재할당돼서 현재 빈배열이거든...
흠 node 원본을 이용해서 map을 해보려고 했으나 왜인지 안됐다.
콘솔에는 되는거같은디 뭐가 문제일까.
let bfs = function (node) {
let data = [];
let que = [node];
while(que.length){
data.push(que[0].value);
que = que.slice(1);
node[0].children.map(el => que.push(el))
}
return data;
};