零碎知识点

324 阅读1分钟

深度优先遍历(Depth-First Search)

通俗的讲它是先遍历子节点(直至结束)再遍历兄弟节点;遍历结果如下 js代码如下

 function deepFirstSearch(node,nodeList) {  
    if (node) {    
        nodeList.push(node);    
        var children = node.children;    
        for (var i = 0; i < children.length; i++) ;
        //每次递归的时候将 需要遍历的节点 和 节点所存储的数组传下去
        deepFirstSearch(children[i],nodeList);    
    }    
    return nodeList;  
  }

广度优先遍历(breadth-first traverse)

js代码如下

function breadthFirstSearch(node) {
    var nodes = [];
    var i = 0;
    if (!(node == null)) {
        nodes.push(node);
        breadthFirstSearch(node.nextElementSibling);
        node = nodes[i++];
        breadthFirstSearch(node.firstElementChild);
    }
    return nodes;
}
参考文献

JS算法之深度优先遍历(DFS)和广度优先遍历(BFS)