首页 > 编程知识 正文

深度优先遍历图解例题,广度优先遍历算法

时间:2023-05-06 13:46:07 阅读:153658 作者:132

深度优先遍历和广度优先遍历序言深度优先遍历广度优先遍历总结

前言

有两种方法可以遍历DOM树或其他树结构中的数据。 一个是深度优先的遍历,另一个是广度优先的遍历。

DOM 树结构

! doctypehtmlhtmllang=' en ' headmetacharset=' utf-8 ' title title/title/headbodydivclass=' parent ' divclass=' child-1-1 ' divclass=' child-1-1-1 ' a/div/' divdivclass=' child-2 ' divclass=' child-2-1 ' d/divdivclass=' class div/div 遍历divdivclass=' child-3-2 ' g/div/div/body父节点后,在第一个子节点、第一个字节点下的所有子节点、以及第二子节点、第二子节点下从这里类推的话,总之是纵向后横向。 例如,如果我想学习JavaScript、Java、c的话。 我先学习JavaScript,从语法到应用到基础实现都很熟悉,再学习Java,也是先研究Java。 最后再去学c。

letdeeptraversal=(node,nodeList=[] )={ if } node!==null () nodelist.push ) node; let children=node.children; for(letI=0; i children.length; I ) {deeptraversal(Children[I],nodeList ) }返回nodeList; console.log (deep traversal (document.getelementsbyclassname (' parent ' ) [0] );

广度优先导线测量深度优先遍历:横向导线测量。 遍历

完成父节点后,开始遍历第一个子节点、第二子节点、第三个子节点、和,直到遍历父元素下的所有子节点。 重复所有元素,直到遍历第一个元素下的子节点、第二个元素下的子节点和第三个元素下的子节点。 例如,如果我想学习JavaScript、Java、c的话。 我先学习JavaScript语法,然后学习Java语法,再学习c语法。 横向学习这些语法后,您将学习JavaScript操作(写项目)、Java操作(C操作)、项目(写项目)。 横向学习完所有的语言。

letwidthtraversal=function (node,nodeList=[],stack=[] ) if ) node ) ) stack.push ); while(stack.length ) { var item=stack.shift; nodelist.push(item; let child=item.children; for(letI=0; ichild.length; I ) stack.push(child[I]; (; } return nodelist } console.log (width traversal (document.getelementsbyclassname (' parent ' )0) );

总结深度优先遍历,实现原理如下。

)1)将当前节点推送到数组中;

)2)轮询当前节点的子节点,以各自的子节点作为当前节点)重复(递归)1)步骤。 广度优先的遍历,实现原理是:

)1)将父元素(rootNode )推送到堆栈)后;

)只要堆栈中还有数据,就删除堆栈中的第一个元素(rootNode ),同时将其推送到累计数组中(nodeList ) )。

)3)即使获取子元素(rootNode.children )也推送至堆栈;

(4)重复2 )3)的步骤。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。