亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python3.x - 關(guān)于Python圖遍歷的操作

瀏覽:120日期:2022-06-28 11:59:58

問(wèn)題描述

就是創(chuàng)建了一個(gè)圖 想要進(jìn)行深度遍歷 和 廣度遍歷 但是第二個(gè)遍歷的時(shí)候只會(huì)出現(xiàn)一個(gè)data 感覺(jué)是因?yàn)樽约褐暗哪莻€(gè)遍歷把 self.visited[node] = True 的緣故 但是又不知道怎么進(jìn)行修改,求各位指教

以下是代碼:

class Graph(object): def __init__(self, *args, **kwargs):self.node_neighbors = {}self.visited = {} def add_nodes(self,nodelist):for node in nodelist: self.add_node(node) def add_node(self,node):if node not in self.nodes(): self.node_neighbors[node] = [] def add_edge(self,edge):u, v = edgeif(v not in self.node_neighbors[u]) and (u not in self.node_neighbors[v]): self.node_neighbors[u].append(u) if(u!=v):self.node_neighbors[v].append(u) def nodes(self):return self.node_neighbors.keys() def depth_first_search(self, root=None):order = []def dfs(node): self.visited[node] = True order.append(node) for n in self.node_neighbors[node]:if not n in self.visited: dfs(n)if root: dfs(root)for node in self.nodes(): if not node in self.visited:dfs(node)print(order)return order def breadtg_frist_search(self, root = None):queue = []order = []def bfs(): while len(queue) > 0:node = queue.pop()self.visited[node] = Truefor n in self.node_neighbors[node]: if (not n in self.visited) and (not n in queue):queue.append(n)order.append(n)if root: queue.append(root) order.append(root) bfs()for node in self.nodes(): if not node in self.visited:queue.append(node)order.append(node)bfs()print(order)return orderif __name__ == ’__main__’: g = Graph()g.add_nodes([i+1 for i in range(10)])g.add_edge((1, 2))g.add_edge((1, 3))g.add_edge((2, 4))g.add_edge((2, 5))g.add_edge((4, 8))g.add_edge((5, 8))g.add_edge((5, 9))g.add_edge((3, 6))g.add_edge((3, 7))g.add_edge((7, 10))g.add_edge((9, 10))print(’nodes:’, g.nodes())order = g.depth_first_search(1)order = g.breadtg_frist_search(1)

然后遍歷出來(lái)的結(jié)果是

nodes: dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][1]

問(wèn)題解答

回答1:

樓主,是self.visited的問(wèn)題,第一次深度搜索調(diào)用self.visted時(shí),已經(jīng)把所有節(jié)點(diǎn)變?yōu)閠rue,第二次廣度搜索使用第一次深度搜索結(jié)果, 改為如下即可:

class Graph(object): def __init__(self, *args, **kwargs):self.node_neighbors = {}#self.visited = {} # 刪除此行 ... def depth_first_search(self, root=None):self.visited = {} # 添加此行... def breadtg_frist_search(self, root = None):self.visited = {} # 添加此行...

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 亚洲欧美国产精品专区久久 | 青草视频在线观看免费 | 亚洲欧美国产精品久久久 | 精品国产调教最大网站女王 | 草草青青| 96精品免费视频大全 | 久久成人激情视频 | 国产日韩欧美亚洲综合 | 国产大片一区 | 精品三级国产一区二区三区四区 | japanesexvideos护士| 欧美卡1卡2卡三卡网站入口 | 亚洲日日做天天做日日谢 | 三及毛片 | 欧美ol丝袜高跟秘书在线观看 | 亚洲成人黄色在线观看 | 五月婷婷六月合 | 日韩激情无码免费毛片 | a久久久久一级毛片护士免费 | 国产在线观a免费观看 | 九草视频在线 | 免费播放国产性色生活片 | 天天操夜夜爱 | a黄色| 青青热久免费精品视频网站 | a免费在线观看 | 国产日韩视频在线 | 97视频免费看 | 黄一级片 | 亚洲色图图片 | 日韩精品一区二区三区国语自制 | 国产丝袜美腿高跟白浆 | 亚洲青青青网伊人精品 | 精品国产理论在线观看不卡 | 亚洲国产一区二区三区最新 | 国模午夜写真福利视频在线 | 91久久亚洲精品一区二区 | 99在线精品国产不卡在线观看 | 日本成熟老妇乱 | 美国一级大黄大色毛片 | 欧美成视频人免费淫片 |