1.图的表示方式

邻接矩阵:

 

 

 邻接链表

 

 2.图的遍历

2.1 广度优先

public void bfs(boolean[] isVisted,int target){
        int u;//存储队列头元素
        int w;
        System.out.println(target+"------->");
        isVisted[target]=true;
        LinkedList queue=new LinkedList();
        queue.addLast(target);
        while(!queue.isEmpty()){
            u=(Integer)queue.removeFirst();
            w=getFirstNeighbor(u);
            while(w!=-1){
                if(!isVisted[w]){
                    System.out.print(w+"------->");
                    isVisted[w]=true;
                    queue.addLast(w);
                }else{
                    w=getNextNeighbor(u,w);
                }
            }
        }
    }


    //遍历所有结点,都进行BFS
    public void bfs(){
        for(int i=0;i<numOfVertex;i++){
            if(!isVisted[i]) {
                bfs(isVisted, i);
            }
        }
    }

2.2 深度优先

 public void dfs(boolean[] isVisted,int target){

        System.out.print(getVertexByIndex(target)+"------->");

        isVisted[target]=true;
        int w=getFirstNeighbor(target);

        //如果有
        while(w!=-1){
            if(!isVisted[w]){
                dfs(isVisted,w);
            }else{
                w=getNextNeighbor(target,w);
            }

        }

    }


    //对dfs进行重载
    public  void dfs(){
        //遍历所有的结点,进行dfs(回溯)
        for(int i=0;i<numOfVertex;i++){
            if(!isVisted[i]){
                dfs(isVisted,i);
            }
        }
    }

 

posted @ 2021-08-26 15:07  L1998  阅读(21)  评论(0)    收藏  举报