代码与动画 GRAPH · ADJACENCY LIST
图.
使用邻接表保存节点关系,逐条加入无向边。
空间 O(V + E)构建 O(V + E)无向图 · 允许环
原理与执行逻辑
图由顶点与连接它们的边构成,邻接表为每个顶点保存直接相连的顶点。无向边需要在两端的邻接表中各登记一次。
执行步骤
- 为固定顶点建立空邻接表。
- 读取一条无向边 A-B。
- 将 B 加入 A 的邻接表,同时将 A 加入 B 的邻接表。
- 处理全部边,得到后续遍历可用的连接关系。
关键理解
邻接表只保存直接相连的关系,间接可达关系需要遍历才能确定。当前 Demo 合并重复边,允许孤立节点与环。
简短示例
加入 A-B 与 B-C 后,A 的邻居是 B,B 的邻居是 A、C,C 的邻居是 B;A 到 C 需要经过 B。
代码与执行动画
STEP 0 / 8function 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;}无向图顶点 6边 0
当前数据正在操作已访问 / 命中标记 / 指针
输出 / 辅助状态
A: []B: []C: []D: []E: []F: []
0
创建图节点
为 A–F 创建空的邻接表。
配置图
修改边列表可添加或删除连接,支持不连通图。
图的操作规则
固定六个顶点 A–F,边以 A-B 的形式输入。应用后从空邻接表开始逐条添加;删除输入中的边再应用,可观察新图的构建过程。
对应题目与扩展练习
观察执行过程后,按题目约束调整输入、返回值与实现。链接打开官方题目页面。
- 对应题目133. 克隆图打开题目
练习邻接关系、节点映射,以及环图的复制。