分享

图论:8.2.图的遍历(深度优先、广度优先)

 shaobin0604@163.com 2006-09-14
1.深度优先

DFS(v)
    num(v) = i++;
    for 所有与 v 邻接的节点 u
        if num(u)是0
            将edge(vu)连接到edges中;
            DFS(u);
 
depthFirstTraverse()
    for 所有向量 v
        num(v) = 0;
    edges = null;
    i = 1;
    while 有一个向量 v 使得 num(v) 是0
        DFS(v);
    输出edges;

 
2.广度优先
 
breadthFirstTraverse()
    for 所有顶点 u
        num(u) = 0;
    edges = null;
    i = 1;
    while 存在一个顶点 v 使得 num(v) 是0
        num(v) = i++;
        enqueue(v);
        while 队列非空
            v = dequeue();
            for 所有和 v 邻接的顶点 u
                if num(u) 是 0
                    num(u) = i++;
                    enqueue(u);
                    将edge(vu)连接到edges中;
    输出 edges;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多