编辑代码

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}`)
        // console.log(queue)
	}
}
measure(node)