编辑代码

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": []
    }]
}
/**
 * @param {{id:number,level:number,children:[]}[]} node
 * @param {'breadth'|'depth'} mode
 */
const measure = (node, mode = 'breadth') => {

    let targetNodeList = [{ id: node.id, level: node.level }]

    function updateNodeLevel(node, parentLevel = node.level) {
        const { children } = node
        if (!Array.isArray(children) || children.length === 0) {
            return
        }
        if (mode === 'depth') {
            children.forEach(node => {
                targetNodeList.push({ id: node.id, level: parentLevel + 1 })
                updateNodeLevel(node, parentLevel + 1)
            })
            return
        }
        if (mode === 'breadth') {
            children.forEach(node => {
                targetNodeList.push({ id: node.id, level: parentLevel + 1 })
            })
            children.forEach(node => {
                updateNodeLevel(node, parentLevel + 1)
            })
        }

    }

    updateNodeLevel(node)

    return targetNodeList
}

console.log(measure(node))