深度优先算法

【数据结构和算法】_09_广度 / 深度 优先搜索

a 夏天 提交于 2020-03-05 23:11:50
文章目录 【一】 Breadth - First Search (广度优先搜索) 【二】 Depth - First Search (深度优先搜索) 【三】 Interview (面试题) 【3.1】 LeetCode 102:Binary Tree Level Order (二叉树的层次遍历) 【3.2】 LeetCode 104:Max depth (二叉树的最大深度) 【3.3】 LeetCode 111:Min depth (二叉树的最小深度) 【3.4】 LeetCode 22:Generate Parentheses (括号生成) 【一】 Breadth - First Search (广度优先搜索) 比较符合人类的思维的,常用的,搜索算法,必须掌握 示意图( 树 ) 代码 (不仅适用于树,也适用于图) # python 广度优先搜索 def BFS ( graph , start , end ) : # 队列,先进先出 queue = [ ] queue . append ( [ start ] ) # visited 里的数据表示被访问过了 (对二叉树来说没必要) visited . add ( start ) # 当队列不为空时 while queue : # 将队列头元素取出 node = queue . pop ( ) # 放进被访问过的列表里 visited

DOM深度优先遍历算法

妖精的绣舞 提交于 2019-12-05 07:02:38
通过深度优先遍历算法,可以依次获取每个后代节点的对象。 顺序:有子元素先获取子元素,再获取兄弟元素 主要有2步骤: //1.创建节点迭代器对象(parent是要遍历的节点) var iterator = document.createNodeIterator(parent, NodeFilter.SHOW_ELEMENT, null, false); //2.反复调用iterator的nextNode方法跳到下一个 do{   var node = iterator.nextNode();   if(node != null) console.log(node.nodeName);   else break; }while(true); 以上也可以使用递归实现,但递归效率较低,不建议使用。 来源: https://www.cnblogs.com/1016391912pm/p/11912503.html