深度优先和广度优先 2020-06-15

2020-06-15  本文已影响0人  Allan要做活神仙
  <div id="root1">
    <ul>
         <li>
             <a href="">
                 <img src="" alt="">
             </a>
         </li>
         <li>
             <span></span>
         </li>
         <li>
         </li>
     </ul>
     <p></p>
     <button></button>
 </div>

广度优先:
利用队列先进先出原理

function breadthTra(node) {
  var queue = [], // 开辟一个临时队列,用于组装
    res = []
  if (node) {
    queue.push(node)
    while (queue.length) {
      var item = queue.shift() // 取出第一项
      res.push(item) // [div]
      for (var i = 0; i < item.children.length; i++) {
        queue.push(item.children[i])
      }
    }
  }

  console.log(res, 11)
  return res
}

深度优先:
【递归】当前节点(node)下面的子节点(node.children)

function deepTra(node){
        let res = [];
        if(node !== null) {
            res.push(node);
            let child = node.children;
            for(let i=0;i<chid.length;i++){
                deepTra(child[i]);
            }
        }
        return res;
    }
上一篇下一篇

猜你喜欢

热点阅读