networkx图论Depth First Search广度优先搜索遍历DFS,基于栈,Python

x33g5p2x  于2021-11-13 转载在 Python  
字(18.6k)|赞(0)|评价(0)|浏览(439)

(1)深度优先搜索遍历,通常使用栈来保存遍历搜索过的节点记录。当搜索到的节点没有子节点,意味着达到了尽头,开始回退。回退的过程其实就是把栈顶的节点弹出(删掉),然后再次在栈中读第一个元素(本例是列表实现的栈,即为0号元素)。

(2)每个节点用一个标志位标记当前节点是否已经访问过,如果访问过,压入栈顶。

(3)每次迭代独取当前顶点V时候,同时要把顶点V的子节点压入栈。

import networkx as nx
import matplotlib.pyplot as plt

# 记录搜索路径
search_path = []

def my_graph():
    # G = nx.gnm_random_graph(n=6, m=8)
    # G = nx.balanced_tree(r=3, h=2)
    G = nx.random_tree(20)

    pos = nx.spring_layout(G)
    nx.draw_networkx(G, pos,
                     node_color='green',
                     node_size=300,
                     font_size=10,
                     font_color='white',
                     edge_color='gray',
                     width=1,
                     with_labels=True)

    print('G.nodes(data=True)', G.nodes(data=True))

    dfs(G)

    plt.show()

# 基于栈实深度优先遍历搜索
def dfs(G):
    for n in G.nodes():
        G.nodes[n]['visited'] = False
    print(G.nodes(data=True))
    print(G.edges(data=True))

    V = 0

    stack = []  # 用列表当作一个栈,只在栈顶操作(数组的第1个位置)
    stack.append(V)

    while True:
        if len(stack) == 0:
            break

        print('-----')
        print('stack-', stack)

        visit_node = stack[0]
        G.nodes[visit_node]['visited'] = True
        print('访问', visit_node)

        neighbors = nx.neighbors(G, visit_node)

        count = 0
        for node in neighbors:
            visited = G.nodes[node]['visited']
            if (visited) or (node in stack) or (node in search_path):
                continue

            stack.insert(0, node)
            count = count + 1

        print('nodes', G.nodes(data=True))

        if count == 0:
            print(visit_node, '走到尽头')
            del (stack[0])
            print('弹出', visit_node)
            search_path.append(visit_node)

        print('stack--', stack)

    list.reverse(search_path)
    print('search_path', search_path)

    print('\n==对比深度搜索遍历结果==')
    print('networkx dfs',list(nx.dfs_tree(G,V)))

if __name__ == '__main__':
    my_graph()

生成图:

日志输出:

G.nodes(data=True) [(0, {}), (1, {}), (2, {}), (3, {}), (4, {}), (5, {}), (6, {}), (7, {}), (8, {}), (9, {}), (10, {}), (11, {}), (12, {}), (13, {}), (14, {}), (15, {}), (16, {}), (17, {}), (18, {}), (19, {})]
[(0, {'visited': False}), (1, {'visited': False}), (2, {'visited': False}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': False}), (6, {'visited': False}), (7, {'visited': False}), (8, {'visited': False}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': False}), (18, {'visited': False}), (19, {'visited': False})]
[(0, 7, {}), (1, 4, {}), (1, 10, {}), (1, 5, {}), (1, 19, {}), (2, 8, {}), (2, 17, {}), (3, 7, {}), (5, 17, {}), (6, 16, {}), (7, 8, {}), (8, 15, {}), (9, 18, {}), (9, 14, {}), (11, 15, {}), (12, 16, {}), (13, 18, {}), (14, 16, {}), (14, 17, {})]
-----
stack- [0]
访问 0
nodes [(0, {'visited': True}), (1, {'visited': False}), (2, {'visited': False}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': False}), (6, {'visited': False}), (7, {'visited': False}), (8, {'visited': False}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': False}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [7, 0]
-----
stack- [7, 0]
访问 7
nodes [(0, {'visited': True}), (1, {'visited': False}), (2, {'visited': False}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': False}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': False}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': False}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [8, 3, 7, 0]
-----
stack- [8, 3, 7, 0]
访问 8
nodes [(0, {'visited': True}), (1, {'visited': False}), (2, {'visited': False}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': False}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': False}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [2, 15, 8, 3, 7, 0]
-----
stack- [2, 15, 8, 3, 7, 0]
访问 2
nodes [(0, {'visited': True}), (1, {'visited': False}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': False}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': False}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [17, 2, 15, 8, 3, 7, 0]
-----
stack- [17, 2, 15, 8, 3, 7, 0]
访问 17
nodes [(0, {'visited': True}), (1, {'visited': False}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': False}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 5
nodes [(0, {'visited': True}), (1, {'visited': False}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 1
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': False})]
stack-- [19, 10, 4, 1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [19, 10, 4, 1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 19
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': False}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
19 走到尽头
弹出 19
stack-- [10, 4, 1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [10, 4, 1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 10
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': False}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
10 走到尽头
弹出 10
stack-- [4, 1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [4, 1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 4
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
4 走到尽头
弹出 4
stack-- [1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [1, 5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 1
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
1 走到尽头
弹出 1
stack-- [5, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [5, 14, 17, 2, 15, 8, 3, 7, 0]
访问 5
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': False}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
5 走到尽头
弹出 5
stack-- [14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [14, 17, 2, 15, 8, 3, 7, 0]
访问 14
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': False}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
stack-- [9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 9
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': False}), (19, {'visited': True})]
stack-- [18, 9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [18, 9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 18
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': False}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
stack-- [13, 18, 9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [13, 18, 9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 13
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
13 走到尽头
弹出 13
stack-- [18, 9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [18, 9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 18
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
18 走到尽头
弹出 18
stack-- [9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [9, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 9
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': False}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
9 走到尽头
弹出 9
stack-- [16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 16
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': False}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
stack-- [12, 6, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [12, 6, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 12
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': False}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
12 走到尽头
弹出 12
stack-- [6, 16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [6, 16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 6
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
6 走到尽头
弹出 6
stack-- [16, 14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [16, 14, 17, 2, 15, 8, 3, 7, 0]
访问 16
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
16 走到尽头
弹出 16
stack-- [14, 17, 2, 15, 8, 3, 7, 0]
-----
stack- [14, 17, 2, 15, 8, 3, 7, 0]
访问 14
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
14 走到尽头
弹出 14
stack-- [17, 2, 15, 8, 3, 7, 0]
-----
stack- [17, 2, 15, 8, 3, 7, 0]
访问 17
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
17 走到尽头
弹出 17
stack-- [2, 15, 8, 3, 7, 0]
-----
stack- [2, 15, 8, 3, 7, 0]
访问 2
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': False}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
2 走到尽头
弹出 2
stack-- [15, 8, 3, 7, 0]
-----
stack- [15, 8, 3, 7, 0]
访问 15
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': False}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
stack-- [11, 15, 8, 3, 7, 0]
-----
stack- [11, 15, 8, 3, 7, 0]
访问 11
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': True}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
11 走到尽头
弹出 11
stack-- [15, 8, 3, 7, 0]
-----
stack- [15, 8, 3, 7, 0]
访问 15
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': True}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
15 走到尽头
弹出 15
stack-- [8, 3, 7, 0]
-----
stack- [8, 3, 7, 0]
访问 8
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': False}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': True}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
8 走到尽头
弹出 8
stack-- [3, 7, 0]
-----
stack- [3, 7, 0]
访问 3
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': True}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': True}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
3 走到尽头
弹出 3
stack-- [7, 0]
-----
stack- [7, 0]
访问 7
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': True}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': True}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
7 走到尽头
弹出 7
stack-- [0]
-----
stack- [0]
访问 0
nodes [(0, {'visited': True}), (1, {'visited': True}), (2, {'visited': True}), (3, {'visited': True}), (4, {'visited': True}), (5, {'visited': True}), (6, {'visited': True}), (7, {'visited': True}), (8, {'visited': True}), (9, {'visited': True}), (10, {'visited': True}), (11, {'visited': True}), (12, {'visited': True}), (13, {'visited': True}), (14, {'visited': True}), (15, {'visited': True}), (16, {'visited': True}), (17, {'visited': True}), (18, {'visited': True}), (19, {'visited': True})]
0 走到尽头
弹出 0
stack-- []
search_path [0, 7, 3, 8, 15, 11, 2, 17, 14, 16, 6, 12, 9, 18, 13, 5, 1, 4, 10, 19]

==对比深度搜索遍历结果==
networkx dfs [0, 7, 3, 8, 15, 11, 2, 17, 14, 16, 6, 12, 9, 18, 13, 5, 1, 4, 10, 19]

相关文章