编写一个函数,实现一个简单的图 (Graph)

推荐答案

-- -------------------- ---- -------
----- ----- -
    ------------- -
        ------------------ - --- ------
    -

    ----------------- -
        -- --------------------------------- -
            ------------------------------ ----
        -
    -

    ---------------- -------- -
        -- ---------------------------------- -
            ------------------------
        -
        -- ---------------------------------- -
            ------------------------
        -
        ----------------------------------------------
        ----------------------------------------------
    -

    ------------------- -------- -
        -----------------------
            --------
            ---------------------------------------- -- - --- --------
        --
        -----------------------
            --------
            ---------------------------------------- -- - --- --------
        --
    -

    -------------------- -
        ----- --------------------------------------- -
            ----- -------------- - -------------------------------------
            ----------------------- ----------------
        -
        ----------------------------------
    -

    ---------- -
        ----- ------ - ---
        ----- ------- - --- ------
        ----- ------------- - -------------------

        --------- ----------------- -
            -- --------- ------ -----
            --------------------
            --------------------
            ------------------------------------------ -- -
                -- ------------------------ -
                    ------ --------------------
                -
            ---
        ----------

        ------ -------
    -

    ---------- -
        ----- ----- - --------
        ----- ------ - ---
        ----- ------- - --- ------
        -------------------

        ----- -------------- -
            ----- ------ - --------------
            --------------------

            ----------------------------------------------- -- -
                -- ------------------------ -
                    ----------------------
                    ---------------------
                -
            ---
        -

        ------ -------
    -
-

-- ----
----- ----- - --- --------
---------------------
---------------------
---------------------
------------------ -----
------------------ -----
------------------ -----

---------------------------- -- ----- ---- ----
---------------------------- -- ----- ---- ----

本题详细解读

数据结构选择

在这个实现中,我们使用了 Map 来存储图的邻接表。Map 的键是顶点,值是与该顶点相连的其他顶点的数组。这种数据结构非常适合表示图,因为它可以快速查找和更新顶点的邻接关系。

添加顶点

addVertex 方法用于向图中添加一个新的顶点。如果顶点已经存在,则不会重复添加。

添加边

addEdge 方法用于在两个顶点之间添加一条边。如果顶点不存在,则会先调用 addVertex 方法添加顶点。然后,将两个顶点分别添加到对方的邻接表中。

删除边

removeEdge 方法用于删除两个顶点之间的边。它通过过滤邻接表中的顶点来实现。

删除顶点

removeVertex 方法用于删除一个顶点及其所有相关的边。它首先删除该顶点的所有邻接边,然后从邻接表中删除该顶点。

深度优先搜索 (DFS)

dfs 方法实现了深度优先搜索算法。它从指定的起始顶点开始,递归地访问所有未访问的邻接顶点,并将访问顺序存储在 result 数组中。

广度优先搜索 (BFS)

bfs 方法实现了广度优先搜索算法。它使用队列来存储待访问的顶点,并按照层级顺序访问所有顶点,将访问顺序存储在 result 数组中。

使用示例

在示例中,我们创建了一个包含三个顶点的图,并添加了三条边。然后,我们分别使用 DFS 和 BFS 遍历图,并输出遍历结果。

纠错
反馈