需求:在页面某个dom节点中遍历,找到目标dom节点,我们正常做法是利用选择器document.getElementById(),document.getElementsByName()或者document.getElementsByTagName(),但在本文,我们从算法的角度去查找dom节点,同时理解一下深度优先遍历(DFS)的原理。
- 题目描述:给定一个父节点,使用DFS遍历返回所有节点
- 题目难度:⭐⭐
//DFS非递归写法
function dfs(node){
let res = [];
let stack = [];
if(node){
stack.push(node);
while(stack.length){
let item = stack.pop();//出栈
res.push(item);
let children = item.children; //拿到子节点
for(let i=children.length-1;i>=0;i--){
stack.push(children[i])
}
}
}
return res
}
//DFS递归写法
function dfs(node,res=[]){
if(node){
res.push(node);
let children = node.children;
for(let i=0; i<children.length; i++){
dfs(children[i],res)
}
}
return res
}
- 下篇我们将介绍BFS广度优先遍历
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。