推荐答案
-- -------------------- ---- ------- ----- ----- - ------------- - ------------------ - --- ------ - ----------------- - -- --------------------------------- - ------------------------------ ---- - - ---------------- -------- - -- ---------------------------------- - ------------------------ - -- ---------------------------------- - ------------------------ - ---------------------------------------------- ---------------------------------------------- - ------------------- -------- - ----------------------- -------- ---------------------------------------- -- - --- -------- -- ----------------------- -------- ---------------------------------------- -- - --- -------- -- - -------------------- - ----- --------------------------------------- - ----- -------------- - ------------------------------------- ----------------------- ---------------- - ---------------------------------- - ---------- - ----- ------ - --- ----- ------- - --- ------ ----- ------------- - ------------------- --------- ----------------- - -- --------- ------ ----- -------------------- -------------------- ------------------------------------------ -- - -- ------------------------ - ------ -------------------- - --- ---------- ------ ------- - ---------- - ----- ----- - -------- ----- ------ - --- ----- ------- - --- ------ ------------------- ----- -------------- - ----- ------ - -------------- -------------------- ----------------------------------------------- -- - -- ------------------------ - ---------------------- --------------------- - --- - ------ ------- - - -- ---- ----- ----- - --- -------- --------------------- --------------------- --------------------- ------------------ ----- ------------------ ----- ------------------ ----- ---------------------------- -- ----- ---- ---- ---------------------------- -- ----- ---- ----
本题详细解读
数据结构选择
在这个实现中,我们使用了 Map
来存储图的邻接表。Map
的键是顶点,值是与该顶点相连的其他顶点的数组。这种数据结构非常适合表示图,因为它可以快速查找和更新顶点的邻接关系。
添加顶点
addVertex
方法用于向图中添加一个新的顶点。如果顶点已经存在,则不会重复添加。
添加边
addEdge
方法用于在两个顶点之间添加一条边。如果顶点不存在,则会先调用 addVertex
方法添加顶点。然后,将两个顶点分别添加到对方的邻接表中。
删除边
removeEdge
方法用于删除两个顶点之间的边。它通过过滤邻接表中的顶点来实现。
删除顶点
removeVertex
方法用于删除一个顶点及其所有相关的边。它首先删除该顶点的所有邻接边,然后从邻接表中删除该顶点。
深度优先搜索 (DFS)
dfs
方法实现了深度优先搜索算法。它从指定的起始顶点开始,递归地访问所有未访问的邻接顶点,并将访问顺序存储在 result
数组中。
广度优先搜索 (BFS)
bfs
方法实现了广度优先搜索算法。它使用队列来存储待访问的顶点,并按照层级顺序访问所有顶点,将访问顺序存储在 result
数组中。
使用示例
在示例中,我们创建了一个包含三个顶点的图,并添加了三条边。然后,我们分别使用 DFS 和 BFS 遍历图,并输出遍历结果。