邻接矩阵在java中用二维数组表示,行列表示顶点编号,元素值表示边存在与否或权重;无向图需对称赋值,有向图单向赋值,带权图用特殊值标记无穷大,查询边为o(1),遍历邻接点为o(n)。

图的邻接矩阵在 Java 中通常用二维数组(int[][] 或 boolean[][])表示,其中行和列分别对应图中顶点的编号,矩阵元素值表示两个顶点之间是否存在边(以及边的权重)。
邻接矩阵的基本结构
假设图有 n 个顶点,编号为 0 到 n−1,则邻接矩阵是一个 n × n 的二维数组:
-
matrix[i][j] == 1(或true)表示存在从顶点 i 到顶点 j 的边(有向图);无向图中该值也意味着matrix[j][i]相同 -
matrix[i][j] == 0(或false)表示无边 - 带权图可用
int[][],用Integer.MAX_VALUE或-1表示“无穷大”或“无边”,权值直接存入对应位置
初始化与常见赋值方式
创建邻接矩阵时需先分配内存,再根据边的信息填充:
- 无向无权图:对每条边
(u, v),设matrix[u][v] = matrix[v][u] = 1 - 有向无权图:只设
matrix[u][v] = 1 - 带权无向图:设
matrix[u][v] = matrix[v][u] = weight - 初始化时可先将整个数组置为
0或Integer.MAX_VALUE,避免默认值干扰
访问与遍历操作
判断边是否存在、获取边权、遍历邻接点都可通过下标直接访问:
- 检查边
(i, j)是否存在:matrix[i][j] != 0(无权)或matrix[i][j] != Integer.MAX_VALUE(带权) - 获取顶点
i的所有邻接点:遍历第i行,收集满足matrix[i][j] != 0的j - 时间复杂度为 O(1) 的边查询,但遍历所有邻接点是 O(n),空间固定为 O(n²)
简单代码示例(无向无权图)
// 创建含 4 个顶点的邻接矩阵
int n = 4;<br> int[][] graph = new int[n][n]; // 全自动初始化为 0<br> // 添加边 (0,1), (1,2), (2,3)<br> graph[0][1] = graph[1][0] = 1;<br> graph[1][2] = graph[2][1] = 1;<br> graph[2][3] = graph[3][2] = 1;
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











