谁能提供一个链接来简单解释BFS和DFS及其实现?
假设您具有以下结构:
格式:节点[子级] A B C D] B [EF] C [G] D [] E [] F [] G []
广度优先搜索先访问节点的所有子节点,然后再访问其子节点。这是上述结构的伪代码和解决方案:
1.排队根节点。 2.出队并输出。如果队列为空,请转到步骤5。 3.排队出队节点的子节点。 4.转到步骤2。 5.完成 两个队列:(活动节点)[输出] [工作集] 以root开头: ( ) [] [一个] (A)[A] [BCD] (B)[AB] [CDEF] (C)[ABC] [DEFG] (D)[ABCD] [EFG] (E)[ABCDE] [FG] (F)[ABCDEF] [G] (G)[ABCDEFG] [] 完成了
深度优先搜索将首先访问树的最低层(最深的子级)。深度优先搜索有两种类型:预订购和后订购。这只是区分何时将节点添加到输出(访问它还是离开它)。
var rootNode = structure.getRoot(); var preOrder = new Array(); var postOrder = new Array(); 函数DepthFirst(rootNode){ // 预购 preOrder [preOrder.length] = rootNode; for(rootNode中的var child){ DepthFirst(child); } //后期订购 postOrder [postOrder.length] = rootNode; } 预购: * ABEFCGD 后订单: * EFBGCDA