Javascript 这是广度优先还是深度优先?
从JavaScript中选择好的部分(已修改): 我很难分析这个。DOM调用非常简单 它似乎是深度优先,因为每个深度级别都会重复调用Javascript 这是广度优先还是深度优先?,javascript,Javascript,从JavaScript中选择好的部分(已修改): 我很难分析这个。DOM调用非常简单 它似乎是深度优先,因为每个深度级别都会重复调用walk() 如果它确实是深度优先的,那么它是什么样的深度优先-预排序、顺序排序还是后排序 这是维基百科。深度优先。因为每次递归调用都会尝试遍历到更深的层次。这是DFS 这里func是在节点上发生的一些操作。因此,就树遍历而言,为了简单起见,我们可以去掉func。简化的遍历是: function walk(node) { node = node.firstCh
walk()
如果它确实是深度优先的,那么它是什么样的深度优先-预排序、顺序排序还是后排序
这是维基百科。深度优先。因为每次递归调用都会尝试遍历到更深的层次。这是DFS 这里func是在节点上发生的一些操作。因此,就树遍历而言,为了简单起见,我们可以去掉func。简化的遍历是:
function walk(node) {
node = node.firstChild;
while(node)
{
walk(node);
node = node.nextSibling;
}
}
现在很容易注意到,您正在为当前节点的所有子节点逐个调用函数“walk”。此外,函数在对其所有子函数执行“漫游”操作时返回。这是DFS的属性 那么,它与维基百科文章中的伪代码算法相比如何?@Handy pre-order。这取决于您要执行的操作。要确定预/后/顺序,我们需要查看“func”函数。假设“func”打印节点id。由于在对其任何子节点调用func之前,对当前节点调用func,因此它是预顺序遍历。
function walk(node) {
node = node.firstChild;
while(node)
{
walk(node);
node = node.nextSibling;
}
}