您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页遍历DOM(深度优先、广度优先)

遍历DOM(深度优先、广度优先)

来源:华拓科技网
// 深度优先--递归
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
}
复制代码

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务