原生JavaScript实现树的深度遍历
前记
目前,网上有一些使用JavaScript实现树的深度遍历和广度遍历的例子。然而,运行后得出的结果是不对的。
这究竟是为什么呢?让我们先来看看错误的例子。
事先假定遍历的DOM树
<div id="subTree">
<form><input></form>
<p></p>
<span></span>
<form><input><input></form>
</div>
递归实现深度遍历
错误的代码:
function deepTraversal(node) {
let nodes = [];
if (node != null) {
nodes.push(node);
var children = node.children;
for (var i = 0; i < children.length; i++)
deepTraversal(children[i]);
}
return nodes;
}
let test = document.getElementById("subTree");
console.log(deepTraversal(test));
运行结果:
["DIV"]
这是一段使用递归来深度遍历树的代码,逻辑上并没有任何错误。