学习首页/数据结构/图交互演示 · JavaScript

代码与动画 GRAPH · ADJACENCY LIST

图.

使用邻接表保存节点关系,逐条加入无向边。

空间 O(V + E)构建 O(V + E)无向图 · 允许环

原理与执行逻辑

图由顶点与连接它们的边构成,邻接表为每个顶点保存直接相连的顶点。无向边需要在两端的邻接表中各登记一次。

执行步骤

  1. 为固定顶点建立空邻接表。
  2. 读取一条无向边 A-B。
  3. 将 B 加入 A 的邻接表,同时将 A 加入 B 的邻接表。
  4. 处理全部边,得到后续遍历可用的连接关系。

关键理解

邻接表只保存直接相连的关系,间接可达关系需要遍历才能确定。当前 Demo 合并重复边,允许孤立节点与环。

简短示例

加入 A-B 与 B-C 后,A 的邻居是 B,B 的邻居是 A、C,C 的邻居是 B;A 到 C 需要经过 B。

代码与执行动画

STEP 0 / 8
图
function createGraph(edges) {  const ids = ['A', 'B', 'C', 'D', 'E', 'F'];  const graph = new Map(ids.map(id => [id, []]));  for (const [from, to] of edges) {    graph.get(from).push(to);    graph.get(to).push(from);  }  return graph;}
9 行 · 0 个片段标记
无向图顶点 6边 0
ABCDEF
当前数据正在操作已访问 / 命中标记 / 指针
输出 / 辅助状态
A: []B: []C: []D: []E: []F: []
0

创建图节点

为 A–F 创建空的邻接表。

配置图

修改边列表可添加或删除连接,支持不连通图。

例如 A-B, B-C;重复边会合并,空列表表示没有边。

实现说明

图的操作规则

固定六个顶点 A–F,边以 A-B 的形式输入。应用后从空邻接表开始逐条添加;删除输入中的边再应用,可观察新图的构建过程。

对应题目与扩展练习

观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。