这是广度优先还是深度优先



来自JavaScript的好部件(已修改):

var walk_the_DOM = function walk(node, func) {
    func(node);
    node = node.firstChild;
    while(node) {
        walk(node, func);
        node = node.nextSibling;
    }
}

我很难分析这个。DOM调用非常简单。

它似乎是深度优先的,因为对于每个深度级别都将重复调用walk()

如果它确实是深度优先,那么它是什么风格的深度优先——预购、订单中还是订单后?

这是关于树遍历的维基百科。

这是一个DFS。

这里func是发生在节点上的一些操作。因此,就树遍历而言,为了简单起见,我们可以去掉func。简化的遍历是:

function walk(node) {
   node = node.firstChild;
   while(node) 
   {
     walk(node);
     node = node.nextSibling;
   }
}

现在很容易注意到,您正在为当前节点的所有子节点逐个调用函数"walk"。此外,当对其所有子项执行"漫游"时,该函数也会返回。这是DFS的属性。

深度优先。因为它总是试图为每个递归调用遍历到更深层次。

最新更新