广度优先搜索和深度优先搜索
问题内容:
谁能提供一个链接来简单解释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