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)=>{
function Node(element) {
this.element = element
this.next=this.prev=null
}
class Link_list {
constructor(){
this.head=new Node()
this.tail=new Node()
this.head.next=this.tail
this.tail.prev=this.head
this.length=0
}
push(element){
let node=new Node(element)
node.prev=this.head
node.next=this.head.next
this.head.next.prev=node
this.head.next=node
this.length++
}
shift(){
let node=this.tail.prev
this.tail.prev.prev.next=this.tail
this.tail.prev=this.tail.prev.prev
this.length--
return node.element
}
}
let queue =new Link_list()
queue.push({node:node,level:0})
while (queue.length > 0) {
let now_node = queue.shift()
now_node.node.children.forEach(child => {
queue.push({ node: child, level: now_node.level + 1 })
})
console.log(`id:${now_node.node.id},level:${now_node.level}`)
}
}
measure(node)