SOURCE

const tree = {
    name: 'root',
    children: [
        {
            name: 'c1',
            children: [
                {
                    name: 'c11',
                    children: []
                },
                {
                    name: 'c12',
                    children: []
                }
            ]
        },
        {
            name: 'c2',
            children: [
                {
                    name: 'c21',
                    children: []
                },
                {
                    name: 'c22',
                    children: []
                }
            ]
        }
    ]
}
// 深度优先
const dfs = (source) => {
    let target = [], stack = []
    stack.push(source)
    while (stack.length) {
        let node = stack.pop()
        target.push(node.name)
        for (let i = node.children.length - 1; i >= 0; i--) {
            stack.push(node.children[i])
        }
    }
    return target
}

// 广度优先
const bfs = (source) => {
    let target = [], queue = []
    queue.push(source)
    while(queue.length){
        let node = queue.shift()
        target.push(node.name)
        for(let i = 0; i < node.children.length; i++){
            queue.push(node.children[i])
        }
    }
    return target
}
console.log(bfs(tree))
console 命令行工具 X clear

                    
>
console