• java算法:图遍历(深度优先和广度优先)


    java算法:图遍历

    递归图形遍历或深度优先搜索,系统地访问图中所有的结点的方法,如,树的遍历,也是很多递归算法的基础。

    访问v,递归地访问每个附属于v的(未访问过的)结点,如果图是连通的,则最终能到达所有的结点。

    例1:深度优先搜索

    Java代码 复制代码
    1. private void dfs(int k){   
    2.     visit(k);   
    3.     visited[k] = true;   
    4.     for(Node t = adj[k]; t != null; t = t.next){   
    5.         if(!visited[t.v]){   
    6.             dfs(t.v);   
    7.         }   
    8.     }   
    9. }  

    使用邻接表表示法在具有V个顶点和E条边的图中进行深度优先搜索所需要的时间与V+E成比例。

    例2:广度优先搜索

    Java代码 复制代码
    1. void  bfs(int k){   
    2.     IntQueue q = new IntQueue(v*v);   
    3.     q.put(k);   
    4.     while(!q.empty()){   
    5.         if(!visited[k = q.get()]){   
    6.             Node t;   
    7.             visit(k);   
    8.             visited[k] = true;   
    9.             for(t = adj[k]; t != null; t = t.next){   
    10.                 if(!visited[t.v]){   
    11.                     q.put(t.v);   
    12.                 }   
    13.             }   
    14.         }   
    15.     }   
    16. }  
  • 相关阅读:
    叶子的染色
    旅游规划
    加分二叉树
    皇宫看守
    战略游戏
    《C/C++/Java/Pascal 程序设计基础》习题集 解题2
    《C/C++/Java/Pascal 程序设计基础》习题集 解题1
    中国大学MOOC-翁恺-C语言程序设计习题集 08-2 到 10-2
    中国大学MOOC-翁恺-C语言程序设计习题集 10-3 到 11-1
    中国大学MOOC-翁恺-C语言程序设计习题集 07-0 到 08-1
  • 原文地址:https://www.cnblogs.com/wuyida/p/6301141.html
Copyright © 2020-2023  润新知