需求:在页面某个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广度优先遍历

鹿角包
175 声望8 粉丝

不苦程序媛