zoukankan      html  css  js  c++  java
  • 深度遍历,广度遍历的理解

    var node = document.getElementById('D1');
    function rangeInterator(node){
    var arr = [];
    arr.push(node);
    while(arr.length > 0){
    node = arr.shift();
    if(node.children.length > 0){
    for (var i = 0; i < node.children.length; i++){
    arr.push(node.children[i])
    }
    }
    }
    }
    console.time('rangeInterator')
    rangeInterator(node)
    console.timeEnd('rangeInterator')
    function depInterator(node){
    if(node.children.length>0){
    for(let j=0;j<node.children.length;j++){
    depInterator(node.children[i])
    }
    }
    }
    console.time('depInterator')
    rangeInterator(node)
    console.timeEnd('depInterator')
     
    <div id="D1" class="D1">
    <div class="d1">
    <p class="p1"></p>
    </div>
    <div class="d2">
    <p class="p2">
    <i></i>
    </p>
    </div>
    </div>
    个人理解是当数据多的时候明显是深度遍历更优,少的时候广度遍历更优
    其实这里我开始的时候纠结了一会,因为当时我找不到广度遍历和深度遍历区别,后来我发现了,其实广度遍历就是从根结点开始,然后把,子节点(所有)通过for循环放到数组里面,然后去这个数组中的第一个元素,注意:此时我们判断这个元素有没有子元素,如果有,只取子节点的,循环把子节点push到数组里面。
    这就是实现顺序的精髓所在,不懂得可以看看打印的东西,可以帮助理解
  • 相关阅读:
    峰Spring4学习(1)HelloWorld
    小峰mybatis(5)mybatis使用注解配置sql映射器--动态sql
    前端实现某一列不能重复不能且不能为空
    jquery:给正则表达式添加变量
    css:width height
    让heigh:100%起作用
    jquery:选择器 过滤器
    vs:如何添加.dll文件
    jq:正则表达式
    css:html() text() val()
  • 原文地址:https://www.cnblogs.com/MDGE/p/14654841.html
Copyright © 2011-2022 走看看