编辑代码

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)=>{
    //TODO write your code here
    class Node {
        // id = 0
        // deep = 0
        // children = []

        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)