一尘不染

广度优先搜索和深度优先搜索

algorithm

谁能提供一个链接来简单解释BFS和DFS及其实现?


阅读 254

收藏
2020-07-28

共1个答案

一尘不染

假设您具有以下结构:

格式:节点[子级]

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
2020-07-28