广度优先
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没有数据;

浙公网安备 33010602011771号