Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这是广度优先还是深度优先?_Javascript - Fatal编程技术网

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

Javascript 这是广度优先还是深度优先?,javascript,Javascript,从JavaScript中选择好的部分(已修改): 我很难分析这个。DOM调用非常简单 它似乎是深度优先,因为每个深度级别都会重复调用walk() 如果它确实是深度优先的,那么它是什么样的深度优先-预排序、顺序排序还是后排序 这是维基百科。深度优先。因为每次递归调用都会尝试遍历到更深的层次。这是DFS 这里func是在节点上发生的一些操作。因此,就树遍历而言,为了简单起见,我们可以去掉func。简化的遍历是: function walk(node) { node = node.firstCh

从JavaScript中选择好的部分(已修改):

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

它似乎是深度优先,因为每个深度级别都会重复调用
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;
   }
}