来自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的属性。
深度优先。因为它总是试图为每个递归调用遍历到更深层次。