广度优先

var tree = {
    val: 'div',
    ch: [{
        val: 'p',
        ch: [{
            val: 'text1'
        }]
    }, {
        val: 'p',
        ch: [{
            val: 'span',
            ch: [{
                val: 'tetx2'
            }]
        }]
    }]

}

function bfs(tree) {
    var queue = [];
    var res = []

    if (!tree) return
    queue.push(tree);
    while (queue.length) {
        var node = queue.shift();
        if (node.ch) {
            for (var i = 0; i < node.ch.length; i++) {
                queue.push(node.ch[i]);
            }
        }
        if (node.val) {
            res.push(node.val);
        }
    }
    return res;
}

console.log(bfs(tree)) //["div", "p", "p", "text1", "span", "tetx2"]

  

思路:先把根节点放入一个数组queue中,然后将其取出来,判断其是否有子节点,如果有,将其子节点依次放入queue数组中;然后依次再从这个数组中取值,重复上述步骤,直到这个数组queue没有数据;

 

posted @ 2021-04-07 11:05  Jiox  阅读(54)  评论(0)    收藏  举报