const node = {
"id": 1,
"level": 0,
"children": [{
"id": 2,
"level": 0,
"children": [{
"id": 4,
"level": 0,
"children": []
}, {
"id": 5,
"level": 0,
"children": []
}, {
"id": 6,
"level": 0,
"children": []
}]
}, {
"id": 3,
"level": 0,
"children": []
}]
}
const measure = (node)=>{
class Node {
constructor(data, deep = 0) {
this.id = data.id
this.deep = deep
this.children = []
if(data.hasOwnProperty('children') && data.children.length){
for(let v of data.children){
this.pushChildrenNode(v)
}
}
}
pushChildrenNode (data) {
this.children.push(new Node(data, this.deep + 1))
}
bfs (bol = true) {
let bfsArr = []
if(bol) bfsArr.push(this)
bfsArr = [...bfsArr, ...this.children]
for(let v of this.children){
bfsArr = [...bfsArr, ...v.bfs(false)]
}
return bfsArr
}
dfs () {
let dfsArr = []
dfsArr.push(this)
for(let v of this.children){
dfsArr = [...dfsArr, ...v.dfs()]
}
return dfsArr
}
}
for(let v of new Node(node).bfs()){
console.log(`id:${v.id},level:${v.deep}`)
}
}
measure(node)