数据结构与算法(十一):图的基础以及遍历代码实现

 

本篇目录

复制代码

 1    private  int[] vertices;// 存储图的顶点 2    public int[][] matrix; // 存储图的边 3    private int verticeSize; // 顶点的数量 4    //带权有向图中代表相邻两个顶点之间不可达 5    private static final int MAX_WEIGHT = 0xFFFF;  6 7    public Graph(int verticeSize) {  8        this.verticeSize = verticeSize;  9        vertices = new int[verticeSize]; 10        matrix = new int[verticeSize][verticeSize]; 11        //初始化存储顶点的一维数组12        for(int i = 0; i < verticeSize; i++) { 13            vertices[i] = i; 14        } 15    }
复制代码
获取图中两个顶点的权值

获取图中两个顶点的权值其实就是二维数组中对应位置的值:

复制代码
 1    /**  2     * 计算V1到v2 的权值  3     * @param v1  4     * @param v2  5     * @return  6     */ 7    public int getWidget(int v1, int v2) {  8        int weight = matrix[v1][v2];  9        return weight == 0 ? 0 : (weight == MAX_WEIGHT ? -1:weight); 10    }
复制代码
获取图某个顶点V的出度

顶点V的出度的获取只需要遍历其所在二维数组那一行数据有几个有效权值即可:

复制代码
 1    /**  2     * 计算某个顶点V的出度  3     * @param v  4     * @return  5     */ 6    public int getOutDegree(int v) {  7        int count = 0;  8        for(int i = 0; i < verticeSize; i++ ) {  9            //遍历其所在二维数组那一行的数据10            if (matrix[v][i] != 0 && matrix[v][i] != MAX_WEIGHT) { 11                count ++; 12            } 13        } 14        return count; 15    }
复制代码
获取图某个顶点V的入度

出度是遍历其所在行,入度就是遍历其所在列了(这里不明白可以自己想想):

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信