// 深度优先--递归
function deepTraversal1(node, nodes = []) {
if (node) {
nodes.push(node)
const children = node.children
for (let i = 0; i < children.length; i++) {
deepTraversal1(children[i], nodes)
}
}
return nodes
}
// 深度优先--非递归
function deepTraversal2(node) {
const nodes = []
const stack = []
if (node) {
stack.push(node)
while(stack.length) {
const item = stack.pop()
const children = item.children
nodes.push(item)
for (let i = children.length - 1; i >=0 ; i--) {
stack.push(children[i])
}
}
}
return nodes
}
// 广度优先
function breadthTraversal(node) {
const nodes = []
const stack = []
if (node) {
stack.push(node)
while(stack.length) {
const item = stack.shift()
const children = item.children
nodes.push(item)
for (let i = 0; i < children.length; i++) {
stack.push(children[i])
}
}
}
return nodes
}
复制代码
遍历DOM(深度优先、广度优先)
最新推荐文章于 2021-06-21 17:45:43 发布