您的位置:首页 > 其它

图算法之深度优先

2008-12-05 09:55 169 查看
/**
 * 
 */
package com.eshore.sweetop.mapbase;

import java.awt.Color;

/**
 * Class DFSTest
 * @author wudongdong
 * DFSTest.java    
 * Dec 5, 2008
 */
public class DFSTest {
    private static int time;
    public static void DFS(Graphics g){
        for (Vertex u : g) {
            u.setColor(Color.WHITE);
            u.setParent(null);
            time=0;
        }
        for (Vertex u : g) {
            if(u.getColor().equals(Color.WHITE)){
                DFSVist(u);
            }
        }
    }
    private static void DFSVist(Vertex u) {
        u.setColor(Color.GRAY);
        time++;
        u.setD(time);
        for (Vertex v : u.getList()) {
            if(v.getColor().equals(Color.WHITE)){
                v.setParent(u);
                DFSVist(v);
            }
        }
        u.setColor(Color.BLACK);
        time++;
        u.setF(time);
    }
    
    public static void main(String[] args) {
        Vertex s1 = new Vertex(1);
        Vertex s2 = new Vertex(2);
        Vertex s3 = new Vertex(3);
        Vertex s4 = new Vertex(4);
        Vertex s5 = new Vertex(5);
        s1.getList().add(s2);
        s1.getList().add(s5);
        s2.getList().add(s1);
        s2.getList().add(s3);
        s2.getList().add(s4);
        s2.getList().add(s5);
        s3.getList().add(s2);
        s3.getList().add(s4);
        s4.getList().add(s2);
        s4.getList().add(s5);
        s4.getList().add(s3);
        s5.getList().add(s4);
        s5.getList().add(s1);
        s5.getList().add(s2);

        Graphics g = new Graphics(s1, s2, s3, s4, s5);
        DFSTest.DFS(g);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: